MySQL ONLY IN() 等效子句

2024-04-07

我在这里给出了我的问题的一个非常抽象的版本,所以请耐心等待。我有一个查询将检查特定主体是否具有相同类型的某些多个参数。例如,一个男孩对于巧克力有多种选择。但是,我想从桌子上选择那些拥有我提到的巧克力的男孩。不多不少,也不是“LIKE”或“IN()”。

SELECT boy_id from boys_chocolates WHERE chocolate_id ONLY IN('$string');

..当然,“$string”是一个 PHP 变量,其中仅包含我想用来拉男孩的那些巧克力的逗号分隔值。

我知道这是无效的 MySQL 语句,但是是否有与此等效的有效语句?

EDIT:

这是更全面的查询,它在特殊情况下获取记录,但并非总是如此。

SELECT boys.* FROM schools_boys INNER JOIN boys ON boys.boy_id=schools_boys.boy_id
INNER JOIN chocolates_boys a ON a.boy_id=boys.boy_id INNER JOIN schools
ON schools.school_id=schools_boys.school_id WHERE a.chocolate_id IN(1000,1003)
AND 
            EXISTS
            (
                    SELECT 1
                    FROM chocolates_boys b
                    WHERE a.boy_id=b.boy_id
                    GROUP BY boy_id
                    HAVING COUNT(DISTINCT chocolate_id) = '2'
                    )

                GROUP BY schools_boys.boy_id HAVING COUNT(*) = '2'

Boys Table
+--------+-------------+
| id     | boy         |
+--------+-------------+
| 10007  | Boy1        |
| 10008  | Boy2        |
| 10009  | Boy3        |
+--------+-------------+

Chocolates Boys Table
+----+---------+--------------+
| id | chocolate_id | boy_id |
+----+--------------+---------+
| 1  | 1000         | 10007   |
| 2  | 1003         | 10007   |
| 3  | 1006         | 10007   |
| 4  | 1000         | 10009   |
| 5  | 1001         | 10009   |
| 6  | 1005         | 10009   |
+----+--------------+---------+

当我单独选择 1000 拉出两个男孩(或)1000 和 1003 拉出 ID 为 10007 的男孩时,没有任何反应。


这个问题称为Relational Division

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN ('$string')
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = ? -- <<== number of chocolates specified

example:

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = 4
  • 关系划分的SQL http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/

然而,如果chocolate_id每个人都是独一无二的boy_id, DISTINCT关键字是可选的。

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(*) = 4

UPDATE 1

...我想从桌子上选择有以下特征的男孩正是我提到的巧克力。不多也不少...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL ONLY IN() 等效子句 的相关文章

  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • PHP mysql_num_rows 死错误

    我想创建一个页面 用户可以在其中添加他们的信息 我已经创建了该页面 但我真正的问题是代码 我有一些问题 这部分代码
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • mysql jdbc 与 SSL 连接在 tls 握手级别失败

    我们的 mysql 服务器配置为仅接受与 ssl 密码 DHE RSA AES256 GCM SHA384 的连接 我正在使用 java mysql connector java 8 0 15 和 java 8 openjdk 版本 1 8
  • AttributeError:尝试在 python 中运行 sqlalchemy 来管理我的 SQL 数据库时,“Engine”对象没有属性“execute”

    我有以下代码行不断给我一个错误 即引擎对象没有对象执行 我认为我一切都对 但不知道接下来会发生什么 似乎其他人也遇到了这个问题 重新启动他们的笔记本电脑就可以了 我正在使用 Pycharm 并已重新启动但没有任何解决方案 任何帮助是极大的赞
  • MySQL - 从表中删除空值行

    我有一张桌子 user 有超过 60 列 其中一列的名称是 用户名 我想删除其中的行username字段为空或NULL 我怎样才能做到这一点 谢谢你 Try this DELETE FROM user WHERE username IS N
  • 为什么涉及用户变量的表达式的求值顺序未定义?

    From MySQL手册 http dev mysql com doc refman 5 7 en user variables html以下查询的输出不保证始终相同 SET a 0 SELECT a AS first a a 1 AS s
  • Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器

    我想在启动时自动启动 MySQL 服务器 这在小牛队是可能的 但在优胜美地似乎不起作用 edit 似乎这也适用于 El Capitan dcc 非常接近 这是 MySQL 在 Yosemite 上再次自动启动的方式 The com mysq
  • 使用 Hibernate 和 MySQL、全局和本地进行 Spring 事务管理

    我正在使用 MySQL Server 5 1 Spring 3 0 5 和 Hibernate 3 6 开发 Web 应用程序 我使用 Springs 事务管理 我是新手 所以如果我问一个容易回答的问题 请耐心等待 1 我读到了有关全局 x
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • WHERE 条件基于 PK 的查询是否建议使用“LIMIT 1”?

    我正在查询 mySQL 数据库以检索 1 个特定行的数据 我使用表主键作为 WHERE 约束参数 E g SELECT name FROM users WHERE userid 4 userid 列是表的主键 在 mySQL 语句末尾使用
  • 在PHP中,如何在表格中显示数组内容

    如果我在 MySQL 客户端中进行选择 我将得到如下所示的输出 mysql gt select FROM group LIMIT 2 group id group supergroup id group deletable group la
  • MySQL Workbench 忽略外键

    在处理 MySQL Workbench 中的 SQL 编辑器时 我偶然发现了一些奇怪的事情 其中 执行似乎忽略了外键约束 这是一个例子 create database testdb use testdb create table t1 te
  • 显示一个表中的所有记录以及另一表中的匹配记录

    您好 我有一张下表 其中记录了活动和积分 Activites A ID Site ActivityValue ActivityName 1 site1 7 ActivityName1 2 site1 6 ActivityName2 2 si
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session

随机推荐

  • 如何在 Angular 中销毁 localStorage 项?

    每当我路由到不同的组件时 我想删除或销毁我的 localStorage 内容 我想实现这一点 以避免 localStorage 变量存储以前的值 即使有新值进来 我走在正确的道路上吗 游戏组件 export class Game imple
  • SQL 触发器 - 如何获取更新的值?

    如何在 SQL 触发器中获取更新记录的值 如下所示 CREATE TRIGGER TR UpdateNew ON Users AFTER UPDATE AS BEGIN SET NOCOUNT ON EXEC UpdateProfile S
  • 如何配置 PHP 显示详细错误而不是错误 500 页面?

    我在 IIS 托管上部署了一个 PHP 应用程序 并且总是收到通用 IIS 错误 500 页面 而不是详细的错误页面 我知道我需要修改一些 php ini 文件 来自this https stackoverflow com question
  • 如何对项目的 cron 作业进行版本控制? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一堆项目 我用 git 和 fab 推送到服务器 它们是 Django 站点的负载 其中一些站点有 cron 作业 我希望处于这样的境地 通
  • 单击浏览器停止按钮时执行操作

    如果这太简单了 我们深表歉意 我是 JQuery 新手 我搜索并发现了类似的问题this https stackoverflow com questions 11220581 jquery browsers stop button even
  • iOS 和 Android 中的照片库

    我正在开发一个用于移动设备运行的应用程序iOS and Android我在访问时遇到一些困难image gallery的设备与Qml 我需要在一个中列出图片库中的图像GridView 我尝试使用返回图片文件夹QStandardPaths但它
  • (Beautiful Soup) 获取按钮标签内的数据

    我尝试在按钮标签内刮出 ImageId 想要得到结果 25511e1fd64e99acd991a22d6c2d6b6c 当我尝试时 drawing url drawing url find all button class inspectB
  • keydown 事件上的 jQuery 触发器()和 stopPropagation()

    我在按键和停止传播方面遇到了困难 我不想刷新我的页面 我已经尝试了我能想到的所有方法 我当前的代码是 知道我在这里做错了什么吗 我认为事件被正确调用 我有 jquery 和 jquery ui 正确链接并且没有收到控制台错误 UPDATE好
  • ggplot2 中的对数色标会压缩某些图例数字

    我正在尝试创建一个类似于以下问题和回答的情节 ggplot2 中有没有内置的方法可以进行对数色标 https stackoverflow com questions 8069837 is there a built in way to do
  • 如何获取网页的公钥?

    如何获取 VeriSign 等网站以及使用 https 安全协议 的所有其他网站的公钥 这取决于您使用的浏览器 如果您让我知道 我会更新我的答案 Chrome 55 及以上您现在可以在开发人员工具中找到此信息 选项 3 个点 gt 更多工具
  • 为什么必须从继承的类中重新声明虚函数?

    我正在开发一个简单的 C 程序 但很难理解我遇到的编译器错误 该问题是由我尝试从基类创建派生类引起的 我在下面发布了具有相同结构的代码 但更改了名称 基类 h ifndef BASECLASS H define BASECLASS H cl
  • 如何以编程方式获取运行 Android 7.0 的设备中已安装的浏览器应用程序的列表?

    在 Android 7 0 之前 我能够检索已安装的浏览器类型应用程序的列表及其包名称 然后 我升级到 Android 7 0 只能检索三星的互联网浏览器 而不能检索其他浏览器类型的应用程序 例如 Chrome Device 三星 Tab
  • 编译时模板参数计算

    我试图在编译时推断两个模板参数中较大的一个 两个模板参数的类型都是 size t 我有一个模板化类型 SomeType 它采用 size t 作为模板参数 然后 我有一个函数 它采用两个具有不同模板 size t 的 SomeType 参数
  • 如何将 HSQL(基于文件)与我的 Android 应用程序连接?

    您好 我在将 Android 应用程序连接到 HSQLDB 时遇到问题 第一个问题 我应该使用 HSQLDB 的特定 android jar 吗 或者我可以使用任何 HSQL jar 吗 第二个问题 如果我可以使用提供的罐子 我如何才能使连
  • Spring Boot锁定代码以获取唯一id

    我编写了一个必须返回唯一字符串的控制器 要求是该控制器的两次调用永远不会返回相同的字符串 即使经过多年 即使代码将扩展到更多虚拟机 我的问题是以下代码是否正确地实现了声明的目的 或者您是否有任何提示 控制器 RestController p
  • EntityManager 注入导致 NullPointerException

    我正在编写我的第一个 Java EE EJB Servlet 等 应用程序 请注意 我正在使用 Eclipse 我遇到了 EntityManager 注入不起作用的问题 并且由于我的 Java EE 以及一般的 Java 新手 很难找到原因
  • 将特征限制在对象上?

    有没有办法限制一个特征 使其只能混合到对象中 例如 trait OnlyForObjects this gt object Foo extends OnlyForObjects gt OK class Bar extends OnlyFor
  • Angular 路由器 URL 编码特殊字符和浏览器行为

    我只是想不出解决这个问题的办法 我正在设计搜索引擎 我想在 url 中显示用户试图查找的内容 如下所示 https my site com search query 28rockstar search true page 0 用户正在尝试寻
  • 如何为成员使用非默认构造函数?

    我有两节课 class a public a int i class b public b Gives me an error here because it tries to find constructor a a a aInstanc
  • MySQL ONLY IN() 等效子句

    我在这里给出了我的问题的一个非常抽象的版本 所以请耐心等待 我有一个查询将检查特定主体是否具有相同类型的某些多个参数 例如 一个男孩对于巧克力有多种选择 但是 我想从桌子上选择那些拥有我提到的巧克力的男孩 不多不少 也不是 LIKE 或 I