我正在開發基於mysql的項目。我需要從多個表中找出數據。 我已經搜查,發現像如何從MYSQL中的多個表中找出數據
SELECT * from table_1, table_2 where (condition)
的解決方案,但這樣的解決方案是罰款幾桌,我有我的數據庫中約57桌。 請讓我知道解決方案。
在此先感謝。
我正在開發基於mysql的項目。我需要從多個表中找出數據。 我已經搜查,發現像如何從MYSQL中的多個表中找出數據
SELECT * from table_1, table_2 where (condition)
的解決方案,但這樣的解決方案是罰款幾桌,我有我的數據庫中約57桌。 請讓我知道解決方案。
在此先感謝。
聽起來像你想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語法。
感謝您的迴應:)我可能不得不改變我的邏輯。 – 2013-02-23 06:06:05
您可以使用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
...
...
...
如果每個表具有相同的列數,你可以使用UNION查詢:
SELECT * FROM Table1 WHERE (condition)
UNION ALL
SELECT * FROM Table2 WHERE (condition)
UNION ALL
SELECT * FROM Table3 WHERE (condition)
UNION ALL
...
你真的需要從所有57個表獲取數據,找到你要找的數據?你的桌子上有什麼類型的數據,你準備怎麼做?表格和數據的一個例子會很棒。 – mjuarez 2013-02-20 08:14:27
也許你應該把數據的提取分成更多的邏輯塊,或者看看你的數據庫設計。我無法想象一個場景,你需要一次性從57個表格編寫連接! – Techmonk 2013-02-20 08:23:00