自连接会产生错误的输出

时间:2011-08-12 18:40:53

标签: sql

考虑下表:

id  |  Name  | City
1   |  Roger | Atlanta
2   |  Roger | Atlanta
3   |  Roger | Miami
4   |  Roger | Miami

现在我想要的是如果我输入id 1作为输入,输出应该是id 2(另一个在同一个城市)。我试过在“城市”专栏上进行自我加入,但它没有用。

2 个答案:

答案 0 :(得分:4)

这会正常工作吗?

SELECT t2.id FROM MyTable t1
JOIN MyTable t2 ON (t1.City = t2.City AND t1.id <> t2.id)
WHERE t1.id = @input

答案 1 :(得分:0)

无论如何都要更快地避免加入并使用类似的东西:

SELECT `id` FROM `table` WHERE `City` IN 
  (SELECT `City` FROM `table` WHERE `id` = 1)

您可能还想检查名称是否匹配(在这种情况下,使用连接可能会更好)。我不确定,因为你没有说这是否是一个要求,我只是假设它不是。