Mysql 使用两个 AND 查询

Mysql query with two AND

我遇到了一些看似简单的查询问题,但我找不到解决方案。

我有一个table像这个

编号 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

我只需要使用一个不同的查询 pro_code,其中 pro_category 等于 13 和 14(两个值)。

这是查询

SELECT pro_code FROM mytable WHERE pro_category=13 and pro_category=14 GROUP BY pro_code

我收到的结果是零条记录。 我期望的结果是 5 和 7,因为 5 和 7 都有 pro_category 值 13 和 14。其他记录只有其中之一,而不是两者。

哪里错了?

提前感谢您的任何建议!

使用 "or" 而不是 "and"。逻辑 "and" 这里给你空集

使用 IN 子句和 HAVING 子句来保证返回的行具有这两个值。

SELECT pro_code 
    FROM mytable 
    WHERE pro_category IN (13, 14) 
    GROUP BY pro_code
    HAVING COUNT(DISTINCT pro_category) = 2;

我认为,您对问题的表述有误:您不希望 distinct pro_code 其中 pro_category 等于 13 和 14,因为那些不存在,但你想要 distinct pro_code 它同时具有 pro_category 13 和 14.

这当然会完全改变您的查询逻辑 - 您现在需要 select 两次:

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
;