我正在开发一个基于mysql的项目。我需要从多个表中找出数据。 我搜索过并找到了像
这样的解决方案SELECT * from table_1, table_2 where (condition)
但这样的解决方案适用于少数几个表,我的数据库中有大约57个表。 请让我知道解决方案。
提前致谢。
答案 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
...