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

如何编写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.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;