-1

我正在开发一个基于 mysql 的项目。我需要从多个表中找出数据。我已经搜索并找到了类似的解决方案

SELECT * from table_1, table_2 where (condition)

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

提前致谢。

4

3 回答 3

0

听起来你想加入你的桌子。例如:

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 写了一篇很好的文章,介绍了使用 ANSI 92 语法而不是 ANSI 89 的原因。

于 2013-02-20T08:19:44.180 回答
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
...
...
...
于 2013-02-20T08:24:18.657 回答
0

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

SELECT * FROM Table1 WHERE (condition)
UNION ALL
SELECT * FROM Table2 WHERE (condition)
UNION ALL
SELECT * FROM Table3 WHERE (condition)
UNION ALL
...
于 2013-02-20T08:50:42.597 回答