【发布时间】:2017-02-01 22:42:49
【问题描述】:
我有以下疑问...
SELECT DISTINCT
inv.name,
loc.city,
cls.color
FROM INVENTORY inv
INNER JOIN Model mod ON mod.id = inv.id
LEFT OUTER JOIN Location loc ON loc.id = mod.id
LEFT OUTER JOIN Class cls ON cls.id = mod.id
ORDER BY name, city asc;
这会给我以下...
NAME | CITY | Color
1 Bob New York Red
2 Janet Denver Green
3 John New York Blue
但我想要的结果是……
NAME | CITY | Color
1 Bob New York Red
2 John New York Blue
有几篇相似但似乎不适用于我的特定查询的帖子,因为我使用一个内连接和两个左外连接来连接多个表。非常感谢任何帮助!
【问题讨论】:
-
您需要解释预期输出背后的逻辑。你只选择男性名字吗?东海岸的城市?
-
你能更好地解释一下逻辑吗?重复什么和在哪里?另外,我删除了 sql-server 标记,因为大量证据表明是 Oracle。
-
我很抱歉。我正在寻找在 City 列中返回具有任何重复值的行。谢谢大家!
-
您为什么选择 DISTINCT - 是否可能有重复的行(这意味着它们具有相同的名称、相同的城市和相同的颜色)?如果这不可能,那么简单的 SELECT 就足够了。然后:如果可能出现重复,您是否希望这些行算作城市的“重复”,还是需要至少两次以不同的名称或不同的颜色找到该城市?
-
我使用 DISTINCT 是因为我的实际查询更复杂,我正在简化它但试图保留主要结构。任何记录都可能在任何列中具有重复值,但我只对 CITY 列中具有重复值的记录感兴趣。如果整行是重复的,只要 CITY 列中的值是重复的,我想包含它。