2013-02-20 56 views
-1

我正在開發基於mysql的項目。我需要從多個表中找出數據。 我已經搜查,發現像如何從MYSQL中的多個表中找出數據

SELECT * from table_1, table_2 where (condition) 

的解決方案,但這樣的解決方案是罰款幾桌,我有我的數據庫中約57桌。 請讓我知道解決方案。

在此先感謝。

+4

你真的需要從所有57個表獲取數據,找到你要找的數據?你的桌子上有什麼類型的數據,你準備怎麼做?表格和數據的一個例子會很棒。 – mjuarez 2013-02-20 08:14:27

+1

也許你應該把數據的提取分成更多的邏輯塊,或者看看你的數據庫設計。我無法想象一個場景,你需要一次性從57個表格編寫連接! – Techmonk 2013-02-20 08:23:00

回答

0

聽起來像你想JOIN你的表。例如:

SELECT * 
FROM table1 
     INNER JOIN Table2 
      ON Table1.table1ID = table2.table1ID 
     LEFT JOIN Table3 
      ON Table2.Table2ID = table3.table2ID; 

不幸的是,如果你想要所有57個表中的數據,你將需要加入所有57個表中的數據。 (我相信有些時候Oracle會更好地優化這些),ANSI 92連接不太容易出現用戶錯誤,並且(對於大多數用戶來說,人們)更清晰,因爲JOIN條件緊跟在表格之後。 Aaron Bertrand寫了一個good article,原因是ANSI 92使用ANSI 92語法。

+0

感謝您的迴應:)我可能不得不改變我的邏輯。 – 2013-02-23 06:06:05

0

您可以使用JOIN子句。

SELECT table_1.name, table_2.salary, table_3.bonus 
FROM employee AS table_1 
INNER JOIN info AS table_2 ON table_1.name = table_3.name; 
INNER JOIN account as table_2 On table_2.salary = table_3.salary 
... 
... 
... 
0

如果每個表具有相同的列數,你可以使用UNION查詢:

SELECT * FROM Table1 WHERE (condition) 
UNION ALL 
SELECT * FROM Table2 WHERE (condition) 
UNION ALL 
SELECT * FROM Table3 WHERE (condition) 
UNION ALL 
... 
相關問題