我有
表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
我想得到
a003
和a004
以及a005
因为a003
,a004
和a005
没有状态1和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