【发布时间】:2017-05-02 16:23:29
【问题描述】:
场景如下:我有这两张表:
(TABLE1)
SUPER_ID| NAME |
-------+--
1 | BOB |
(TABLE2)
ID| SUPER_ID |
-------+----+
1 | 1 |
2 | 1 |
3 | 1 |
如果我将这两个表加入为
`SELECT a.super_id, a.name
FROM TABLE1 a LEFT OUTER JOIN TABLE2 b ON a.super_id = b.super_id
WHERE a.super_id = 1`
结果是
SUPER_ID| NAME |
-------+--------
1 | BOB |
1 | BOB |
1 | BOB |
如何在不使用 GROUP BY 的情况下仅选择 TABLE1 中的行?谢谢
更新:好的,所以我有第三张桌子......
(TABLE3)
ID| TYPE |
-------+----+
1 | A |
2 | B |
3 | C |
我需要加入 TABLE2 AS:
SELECT a.super_id, a.name
FROM TABLE1 a INNER JOIN
TABLE2 b ON a.super_id = b.super_id INNER JOIN
TABLE3 c ON b.id = c.id
WHERE a.super_id = 1
【问题讨论】:
-
TABLE2和TABLE3是什么关系? 1:米?纽:米?请发布一些数据。以供将来参考,请以最小但完整的方式提出您的问题。反复提取细节和细化只会浪费大家的时间。
-
请花几分钟时间了解联接及其工作原理:blog.codinghorror.com/a-visual-explanation-of-sql-joins,因为您想联接 3 个表...您的预期结果集是什么样的?
-
感谢您的回复@xQber;我设法通过在 FROM 子句中使用子查询来完成我的请求;正如@Charles Bretana 所建议的那样。我试图根据 TAABLE1 限制我的结果集,无论 TABLE2 中有多个匹配项