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
;
我遇到了一些看似简单的查询问题,但我找不到解决方案。
我有一个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
;