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

标签 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 结合使用时,针对该条件返回的记录太少。

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

最佳答案

可以减少行数,因为 UNION 仅选择不同的结果..但是您可以使用 UNION ALL 获取所有结果形式,既包括选择也包括具有相同值的行

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

关于mysql - 将 LIMIT 与 UNION 结合使用时 MariaDB 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43798219/

相关文章:

mySql 排名排序从-到

MySQL存储过程更新表和删除相关

mysql - 使用 UNIONS 优化 MySQL 查询

c++ - 一些浮点精度和数值限制问题

Java JTextPane 或 JTextArea 在换行之前设置每行字符

php - MySQL SUM 不返回正确的值,它会删除小数位。如何防止这种情况?

php - 在没有定义排序规则的情况下订购 MySQL 字符串结果?

oracle - 这是 Oracle 可能的错误还是我遗漏了什么?

database - 为什么递归联合不适用于 PostgreSQL 中的复合类型

mysql - LIMIT 无法正常工作