用于查找没有特定值的记录的SQL查询

时间:2017-07-06 03:46:15

标签: sql phpmyadmin

我有

表A

a_id 
a001
a002
a003
a004
a005

表B

a_id | status | user_id
a001 | 0      | u001
a001 | 1      | u002
a001 | 2      | u003
a002 | 1      | u001
a002 | 0      | u002
a002 | 0      | u003
a003 | 0      | u002
a003 | 0      | u003
a004 | 0      | u001

我想得到 a003a004以及a005

因为a003a004a005没有状态1和2

我该怎么做?

2 个答案:

答案 0 :(得分:0)

你可以试试这个

SELECT 
*
FROM tableA a
WHERE NOT EXISTS(SELECT 1 FROM tableB b WHERE b.status <> 0 AND a.a_id = b.a_id)
AND EXISTS(SELECT 1 FROM tableB b WHERE b.status = 0 AND a.a_id = b.a_id)

答案 1 :(得分:0)

我可能会使用聚合来做到这一点:

SELECT a_id
FROM tableB
GROUP BY a_id
HAVING SUM(CASE WHEN status <> 0 THEN 1 ELSE 0 END) = 0