mysql-select from main table with a lot of connected tables从有很多连接表的主表中选择

pb3skfrl  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(327)

我有一个主表,它通过一对多关系与其他10个表相关联。
例如:

main Table           table1               table2
----------           -------              -------
id *                 id*                  id*
name                 mainTableId**     mainTableId**
                     column1              column2

我试过:

SELECT *
FROM main_table
LEFT OUTER JOIN table1 On table1.mainTableId = main_table.id
LEFT OUTER JOIN table2 On table2.mainTableId = main_table.id
...

问题是我得到了很多结果,因为每一个结果 main_table 是所有结果的乘积 table1 , table2 等等。
我只想用一个 SELECT 查询,因为查询数据库10次需要很长时间。
从每个表中检索100个结果就足够满足我的需要了,但是尝试执行以下操作会导致一个错误 limit is not supported with a sub query :

LEFT OUTER JOIN table1 WHERE id in (
    SELECT id FROM table1 WHERE mainTableId = mainTable.id LIMIT 100
)

我用的是aws极光。如何改进此查询?

hgb9j2n6

hgb9j2n61#

SELECT *
FROM main_table
LEFT OUTER JOIN table1 ON main_table.id = table1.mainTableId
LEFT OUTER JOIN table2 ON main_table.id = table2.mainTableId
...

对于第二个问题,您可以从其他表中获取100行,然后将它们连接起来!

SELECT *
FROM main_table
LEFT OUTER JOIN (SELECT * FROM table1 LIMIT 100)a ON main_table.id = a.mainTableId
LEFT OUTER JOIN (SELECT * FROM table2 LIMIT 100)b ON main_table.id = b.mainTableId
...

相关问题