如何编写SQL语句以从三个表中选择数据?
答案 0 :(得分:12)
使用联接
SELECT *
FROM table_1
JOIN table_2 ON (table_2.table_1_id = table_1.table_1_id)
JOIN table_3 ON (table_3.table_1_id = table_1.table_1_id)
这将要求每个表都有一个table_1_id键,并且每个表中都有一个条目。
如果table_2或table_3可能没有数据但您仍想显示table_1中的数据,则可以使用LEFT JOIN
答案 1 :(得分:6)
这是一个非常一般的例子:
SELECT KEYVAL, A.OTHER_COL, B.ANOTHER_COL, C.YET_ANOTHER_COL
FROM TABLE_A A
INNER JOIN TABLE_B B
USING (KEYVAL)
INNER JOIN TABLE_C C
USING (KEYVAL)
如果您的数据库不支持USING,您可以说:
SELECT A.KEYVAL, A.OTHER_COL, B.ANOTHER_COL, C.YET_ANOTHER_COL
FROM TABLE_A A
INNER JOIN TABLE_B B
ON (B.KEYVAL = A.KEYVAL)
INNER JOIN TABLE_C C
ON (C.KEYVAL = A.KEYVAL)
或者你可以说
SELECT A.KEYVAL, A.OTHER_COL, B.ANOTHER_COL, C.YET_ANOTHER_COL
FROM TABLE_A,
TABLE_B,
TABLE_C
WHERE B.KEYVAL = A.KEYVAL AND
C.KEYVAL = A.KEYVAL
但我认为后者不太清楚。
分享并享受。
答案 2 :(得分:2)
如果您的表具有相同的模式,并且您希望基本上连接每个表中的行,那么您应该考虑UNION
查询。
SELECT
Field1, Field2, Field3
FROM Table1
UNION
SELECT
Field1, Field2, Field3
FROM Table2
UNION
SELECT
Field1, Field2, Field3
FROM Table3
如果您想在结果集的单行中包含每个表格中的相关数据,那么您应该查看使用INNER JOIN
和/或OUTER JOIN
s。
SELECT Table1.Field1, Table2.Field2, Table3.Field3
FROM Table1
INNER JOIN Table2 ON Table1.Field1=Table2.Field1
LEFT OUTER JOIN Table3 on Table1.Field3=Table3.Field3
我们需要您提供更多信息,以便为您提供明确的答案,包括您正在使用的RDBMS。
答案 3 :(得分:1)
查看Join(SQL)子句。
你可以和第二张桌子一起加入你的第一张桌子。然后你第三张桌子到你的第一张或第二张桌子。
例如:
SELECT *
FROM TABLE_A
JOIN TABLE_B ON TABLE_A.ID = TABLE_B.ID
JOIN TABLE_C ON TABLE_C.ID = TABLE_B.ID
答案 4 :(得分:1)
使用联接,您可以从三个表中选择数据
SELECT column_name(s)
FROM table1
JOIN
table2 ON table1.column_name = table2.column_name
JOIN
table3 ON table3.column_name = table2.column_name;
答案 5 :(得分:-3)
从三个表中选择数据,例如国家/地区和城市的联接
选择country.country,country.countryid,countrystate.state, 来自国家的countrystatecity.city 内联盟国家 上(country.countryid = countrystate.countryid) 内部联盟countrystatecity 上(countrystate.stateid = countrystatecity.stateid)