从三个表中选择数据?

sad*_*di 7 sql select

如何编写SQL语句来从三个表中选择数据?

Jim*_*Jim 17

使用联接

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)
Run Code Online (Sandbox Code Playgroud)

这将要求每个表都有一个table_1_id键,并且每个表中都有一个条目.

如果table_2或table_3可能没有数据但您仍想显示table_1中的数据,则可以使用LEFT JOIN


Bob*_*ica 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)
Run Code Online (Sandbox Code Playgroud)

如果您的数据库不支持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)
Run Code Online (Sandbox Code Playgroud)

或者你可以说

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
Run Code Online (Sandbox Code Playgroud)

但我认为后者不太清楚.

分享和享受.