我有一个带limits和union的2语句,但是当我运行该语句时,我只得到定义为最高限制的结果数。我想我可以从语句1得到X结果,再加上语句2得到Y结果。这并没有发生。为什么?
以下是查询示例:

SELECT * FROM tableA WHERE X > 100 LIMIT 2
UNION
SELECT * FROM tableA WHERE X < 100 LIMIT 3;

上面的查询返回3个结果。但是在这个简单的例子中,我想要2个结果+3个结果(总共5个结果)。
如果我像这样修改了查询,得到了5个结果,但下面的查询似乎有误导性:
SELECT * FROM tableA WHERE X > 100 LIMIT 2
UNION
SELECT * FROM tableA WHERE X < 100 LIMIT 5;

我发现用另一个语句包装每个语句就解决了这个问题。以下是最终报表的显示方式:
SELECT * FROM(
    SELECT * FROM tableA WHERE X > 100 LIMIT 2
)query1
UNION
SELECT * FROM(
    SELECT * FROM tableA WHERE X < 100 LIMIT 3
)query2;

感谢任何能够解释最初两个陈述的行为的人。

最佳答案

除非使用括号,否则最后的ORDER BY和/或LIMIT子句将作为一个整体应用于联合“外部/之后”的查询。
http://dev.mysql.com/doc/refman/5.7/en/union.html

10-07 12:38
查看更多