我已经阅读了MySQL 5中的61 table join limit,但我不确定它将如何适用于以下内容:
SELECT * FROM (
SELECT * FROM tableA JOIN // Lots of other joins here...
UNION
SELECT * FROM tableB JOIN // Lots of other joins here...
UNION
SELECT * FROM tableC JOIN // Lots of other joins here...
// etc...
)
我是否会在所有子查询中共有61个表,或者每个UNIONed子查询是61个?
这会因数据库而异吗? PostgreSQL,MSSQL,Oracle?
答案 0 :(得分:3)
每个子查询似乎是61。这是一个证明这一点的小提琴。
http://sqlfiddle.com/#!2/2b219/5
我有一行简单的表格:
id | value
1 | testvalue
第一个查询只是表格。
第二个查询将表与自身连接61次。它工作正常。
第三个查询有一个包含61个连接的子查询,它本身又与表连接了一次。它工作正常。
第四个查询加入表62次。它失败了。
答案 1 :(得分:0)
是的,它适用于整个查询。我碰到了这个。在SQL 2005中,限制为256.我们刚刚升级到2008,我不确定是否有限制。查看官方限制:http://msdn.microsoft.com/en-us/library/ms143432.aspx但是,最好的做法是将查询拆分为两个或更改其编写方式。