gpt4 book ai didi

mysql - LIMIT 和 UNION ALL 未返回请求的记录数

转载 作者:行者123 更新时间:2023-12-01 00:41:17 25 4
gpt4 key购买 nike

我有一个包含多个 type 值的表,我想从其中的一些值中获取示例记录。

我目前的查询如下:

-- Pulling three sample records from each "type"
SELECT * FROM example WHERE type = "A" LIMIT 3
UNION ALL
SELECT * FROM example WHERE type = "B" LIMIT 3
UNION ALL
SELECT * FROM example WHERE type = "C" LIMIT 3
;

我预计这会返回总共 9 条记录; 3 个来自 type = "A",3 个来自 type = "B",3 个来自 type = "C"

但是,我实际收到的结果是 type = "A" 的 3 条记录 ,没有别的
我知道存在其他 type 值是因为我可以运行单独的 SELECT 语句并返回结果。

为什么 MySQL 只返回 3 条记录,我怎样才能让它返回我想要的完整 9 条记录?

我创建了一个 SQL Fiddle 来说明这个问题:http://sqlfiddle.com/#!9/d911c/2

最佳答案

使用括号:

(SELECT * FROM example WHERE type = "A" LIMIT 3)
UNION ALL
(SELECT * FROM example WHERE type = "B" LIMIT 3)
UNION ALL
(SELECT * FROM example WHERE type = "C" LIMIT 3);

Demo here

这记录在 manual 中:

To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enclose the SELECT:

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10) UNION (SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);

关于mysql - LIMIT 和 UNION ALL 未返回请求的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com