如何从MYSQL中的多个表中查找数据

时间:2013-02-20 08:11:50

标签: mysql sql

我正在开发一个基于mysql的项目。我需要从多个表中找出数据。 我搜索过并找到了像

这样的解决方案
SELECT * from table_1, table_2 where (condition)

但这样的解决方案适用于少数几个表,我的数据库中有大约57个表。 请让我知道解决方案。

提前致谢。

3 个答案:

答案 0 :(得分:0)

听起来你想JOIN你的桌子。 e.g:

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

不幸的是,如果你想要所有57个表中的数据,你需要加入所有57个表。

您使用的语法(ANSI 89),虽然它可以正常工作通常是最好的避免(我相信有时候Oracle会更好地优化这些),ANSI 92连接不太容易出现用户错误,并且(对大多数人来说) )更清晰,因为JOIN条件紧跟在表之后。 Aaron Bertrand写了good article关于使用ANSI 92语法而不是ANSI 89的理由。

答案 1 :(得分: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
...
...
...

答案 2 :(得分:0)

如果每个表具有相同的列数,则可以使用UNION查询:

SELECT * FROM Table1 WHERE (condition)
UNION ALL
SELECT * FROM Table2 WHERE (condition)
UNION ALL
SELECT * FROM Table3 WHERE (condition)
UNION ALL
...