mySQL循环查询

时间:2014-03-21 03:10:09

标签: mysql sql

我有两张表说表1:会员表2:信息。 ID是主键,A& B是第二个表中的主键。 A代表介绍,B代表介绍的人。所以输入002 - > 001表示001引入002。

我希望有一个查询来显示那些不涉及001的名称,这意味着001介绍的人和介绍001的人不参与。

enter image description here

enter image description here

这是我到目前为止所做的。

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。有什么建议吗?

1 个答案:

答案 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