带两个和的Mysql查询

带两个和的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

我在一个看似简单的问题上遇到了一些麻烦,但我无法找到解决方案

我有一张这样的桌子

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。其他记录有其中一个,而不是两个

错在哪里


提前感谢您的建议

用“或”代替“和”。逻辑“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
;