将 LIMIT 与 UNION 结合使用时 MariaDB 的奇怪行为
Strange behaviour of MariaDB when using LIMIT in combination with UNION
SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500;
...return条件 (def) 的 1500 行。
(SELECT `foo`
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION
(SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)
... returns 2498 行,第二个条件 (def) 为 1498。
因此,正如您从第一个查询的输出中看到的那样,对于条件 "def" 到 return 1500 行,肯定有足够的记录。然而,当与 UNION 结合使用时,return为该条件编辑的记录太少了。
有没有人能指点我追踪这种行为?
可以减少行数,因为 UNION select 只有不同的结果..但是您可以使用 UNION ALL 来获取所有结果形式 select 还包括具有相同值的行
(SELECT `foo`
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION ALL
(SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)
SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500;
...return条件 (def) 的 1500 行。
(SELECT `foo`
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION
(SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)
... returns 2498 行,第二个条件 (def) 为 1498。
因此,正如您从第一个查询的输出中看到的那样,对于条件 "def" 到 return 1500 行,肯定有足够的记录。然而,当与 UNION 结合使用时,return为该条件编辑的记录太少了。
有没有人能指点我追踪这种行为?
可以减少行数,因为 UNION select 只有不同的结果..但是您可以使用 UNION ALL 来获取所有结果形式 select 还包括具有相同值的行
(SELECT `foo`
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION ALL
(SELECT `foo`
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)