将LIMIT与UNION结合使用时,MariaDB的奇怪行为

时间:2017-05-05 06:44:14

标签: mysql union limit mariadb

SELECT `foo` 
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500;

...为条件(def)返回1500行。

(SELECT `foo` 
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION
(SELECT `foo` 
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)

...返回2498行,第二个条件(def)返回1498。

因此,您可以通过第一个查询的输出看到,肯定有足够的条件记录" def"返回1500行。然而,当与UNION结合使用时,返回的条件太少。

有没有人有指针让我追踪这种行为?

1 个答案:

答案 0 :(得分:0)

行数可以减少,因为UNION只选择不同的结果..但是你可以使用UNION ALL来获取所有结果形式,包括select和包含相同值的行

(SELECT `foo` 
 FROM `table`
 WHERE `bar` = 'abc'
 LIMIT 1000)
UNION ALL 
(SELECT `foo` 
 FROM `table`
 WHERE `bar` = 'def'
 LIMIT 1500)