我有两张表说表1:会员和表2:信息。 ID是主键,A& B是第二个表中的主键。 A代表介绍,B代表介绍的人。所以输入002 - > 001表示001引入002。
我希望有一个查询来显示那些不涉及001的名称,这意味着001介绍的人和介绍001的人不参与。
这是我到目前为止所做的。
SELECT DISTINCT Info.A
FROM Info
WHERE NOT (A="001" OR B="001")
UNION
SELECT DISTINCT Info.B
FROM Info
WHERE NOT (A="001" OR B="001)
预期结果应为004
,但我的查询还包括003
。有什么建议吗?
答案 0 :(得分:1)
您可以获取涉及001
的所有ID,然后结果为 NOT IN 这些ID。
SELECT * FROM Member
WHERE ID NOT IN (
SELECT IF(A = '001', B, A)
FROM Info WHERE A = '001' OR B = '001'
UNION
SELECT '001'
)
<强> THE SQLFIDDLE 强>