![](/img/trans.png)
[英]How to select multiple values from single column with multiple tables in MySQL?
[英]Select Multiple Values From Single Column
我想从数据库表中的单个列中选择多个值,这些值等于多个值。 我希望所有这些值匹配,否则它应该不返回任何行。 我不想使用“IN”,因为它等于“OR”。
以下是它应该做什么的基本模型, 但它需要是动态的,因为我希望将它与PDO语句一起使用。 如果数据库只包含id的1和2,则它应该失败,即不返回任何行。
SELECT
id
FROM
reports
WHERE
id=1 AND id=2 AND id=3
我有如下的当前代码,错误地返回零行:
SELECT id,title
FROM reports
WHERE id IN (1,2)
GROUP BY title
HAVING COUNT(DISTINCT id) = 2
我目前的表格结构如下: http : //www.sqlfiddle.com/#!2 /ce4aa / 1
您必须使用HAVING COUNT(id) = 3
来确保所选行具有所有三个id。 就像是:
SELECT *
FROM reports
WHERE id = 1 OR id = 2 OR id = 3 -- Or id IN(1, 2, 3)
GROUP BY SomeOtherField
HAVING COUNT(DISTINCT id) = 3;
要么:
SELECT *
FROM reports
WHERE SomeOtherField IN (SELECT SomeOtherField
FROM reports
WHERE id = 1 or id = 2 -- Or id IN(1, 2, 3)
GROUP BY SomeOtherField
HAVING COUNT(DISTINCT id) = 3
);
请注意:您必须使用GROUP BY SomeOtherField
,其中SomeOtherField
是除id
之外的其他字段,因为如果您使用HAVING COUNT(id)
GROUP BY id
,则不会获得任何记录,因为COUNT(id)
将始终为= 1。
编辑:修复WHERE
子句, OR
代替AND
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.