奇怪的SQL问题为同一列选择多个值

时间:2010-02-23 01:22:08

标签: mysql

现在已经在这几个小时了,我无法理解它。我已经用这种方法多次为同一列选择多个值,但这个有一些奇怪的东西。

SELECT * FROM employee as s
INNER JOIN works AS w1 ON w1.name = s.name
INNER JOIN employee AS w2 ON w2.name = s.name
INNER JOIN employee AS w3 ON w3.name = s.name
WHERE w2.city = 'Washington'

基本上我想要做的就是找到所有城市都有人的公司。公司名称在“作品”下。然而问题是,如果我有WHERE w2.city ='华盛顿',它将使所有城市都匹配华盛顿,它应该只触及w2并留下w3,这样我就可以将它与其他值匹配。

任何人都知道为什么这样做?或者知道更好的方法。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

UPDATE:

好的,我想我现在明白你要做什么。

实施例

SELECT s.* FROM Employee AS s
INNER JOIN Works AS w1 ON w1.Name = s.Name
INNER JOIN (
    SELECT e1.Name FROM Employee AS e1 WHERE e1.City = 'Washington'
    UNION
    SELECT e2.Name FROM Employee AS e2 WHERE e2.City = 'Atlanta'
) AS sub ON sub.Name = s.Name

ORIGINAL:

我假设你正在重复加入,最终在同一列上有多个搜索条件?也许您为了演示目的简化了SQL,但是现在我没有看到需要您进行多次连接的限制。

也许简化你的语句可能会增加一个WHERE IN函数。

实施例

SELECT * FROM Employee AS s
INNER JOIN Works AS w1 ON w1.Name = s.Name
WHERE s.City IN ('Washington', 'Atlanta')