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 
... 
相关问题