Sql 从三个表中选择数据?
如何编写SQL语句从三个表中选择数据?下面是一个非常通用的示例:Sql 从三个表中选择数据?,sql,select,Sql,Select,如何编写SQL语句从三个表中选择数据?下面是一个非常通用的示例: 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) 如果您的数据库不支持使用,您可以说: SELECT A.KEYVAL, A.OTHER_COL, B.ANO
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)
如果您的数据库不支持使用,您可以说:
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
但我认为后者不太清楚
分享和享受。看看这条条款
您可以将第一个表与第二个表合并。然后把第三张桌子换成第一张或第二张桌子
例:
使用连接
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键,并且每个表中都有一个条目
如果表_2或表_3可能没有数据,但仍希望显示表_1中的数据,则可以使用左联接。如果表具有相同的架构,并且希望基本上连接每个表中的行,则应考虑使用
联合
查询
SELECT
Field1, Field2, Field3
FROM Table1
UNION
SELECT
Field1, Field2, Field3
FROM Table2
UNION
SELECT
Field1, Field2, Field3
FROM Table3
如果要将每个表中的相关数据包含在结果集中的一行中,则应使用内部联接
s和/或外部联接
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。使用join,您可以从三个表中选择数据
SELECT column_name(s)
FROM table1
JOIN
table2 ON table1.column_name = table2.column_name
JOIN
table3 ON table3.column_name = table2.column_name;
从国家、州和城市的三个类似表格的联接中选择数据 选择country.country,country.countryid,countrystate.state, countrystatecity.来自乡村的城市 内联国 on(country.countryid=countrystate.countryid) 内联州
on(countrystate.stateid=countrystatecity.stateid)一般原则是使用连接。给我们一些关于表格结构和关系的详细信息,我们可以为您提供一个具体的答案。提供更多信息请查看。我还建议你阅读关于如何提出更好问题的提示。+1用于使用标准ANSI连接(内部连接等)!如果在列列表中使用表别名,也应该在FROM和INTERNAR联接中定义这些表别名!请注意,
对联接使用
语法并不是所有RDBMS平台都通用的。@Joe:我添加了一个使用ON子句的替代方法。谢谢
SELECT column_name(s)
FROM table1
JOIN
table2 ON table1.column_name = table2.column_name
JOIN
table3 ON table3.column_name = table2.column_name;