带两个和的Mysql查询
我在一个看似简单的问题上遇到了一些麻烦,但我无法找到解决方案 我有一张这样的桌子 id pro_code pro_category 1 5 14 2 6 13 3 7 13 4 6 18 5 7 14 6 5 13 7 8 14 8 9 13 我收到的结果是零记录。 我期望的结果是5和7,因为5和7都有pro_类别值13和14。其他记录有其中一个,而不是两个 错在哪里带两个和的Mysql查询,mysql,Mysql,我在一个看似简单的问题上遇到了一些麻烦,但我无法找到解决方案 我有一张这样的桌子 id pro_code pro_category 1 5 14 2 6 13 3 7 13 4 6 18 5 7 14 6 5 13 7 8
提前感谢您的建议 用“或”代替“和”。逻辑“and”在这里为您提供空集使用IN子句和HAVING子句来保证返回的行同时具有这两个值
SELECT pro_code
FROM mytable
WHERE pro_category IN (13, 14)
GROUP BY pro_code
HAVING COUNT(DISTINCT pro_category) = 2;
我认为,你的问题措词是错误的:你不想要不同的pro_代码,pro_类别等于13和14,因为它们不可能存在,但你想要不同的pro_代码,pro_类别同时为13和14 这当然会完全改变您的查询逻辑-您现在需要选择两次:
SELECT DISTINCT first.pro_code
FROM tablename AS first
INNER JOIN tablename AS second ON first.pro_code=second.pro_code
WHERE first.pro_category=13
AND second.pro_category=14
;
这样我就得到了5,6,7,8,9。我只需要5和7
SELECT DISTINCT first.pro_code
FROM tablename AS first
INNER JOIN tablename AS second ON first.pro_code=second.pro_code
WHERE first.pro_category=13
AND second.pro_category=14
;