gpt4 book ai didi

MySQL 将带有 UNION 的查询更改为不带 UNION 的查询

转载 作者:行者123 更新时间:2023-11-29 10:38:27 30 4
gpt4 key购买 nike

如何在不使用 UNION子查询的情况下将此查询更改为一个查询?允许加入。

问题在于,某些产品使用 group_code 列中的值进行分组。这意味着查询结果中应该只返回一个。我正在使用 Doctrine 查询生成器,但无法使用联合或子查询。
我尝试通过执行两个查询并将结果与​​ PHP 结合来解决此问题。但是当我尝试对结果进行分页时,我会说 limit 2,这将返回 4 个结果,因为两个查询都会得到 2 个结果。

查询

(SELECT *
FROM product
WHERE group_code != ''
GROUP BY group_code)

UNION ALL

(SELECT *
FROM product
WHERE group_code IS NULL
GROUP BY id)

LIMIT 0, 2;

想要的结果:

id | title              | group_code
------------------------------------
1 | t-shirt blue | t-shirt
4 | t-shirt with image | NULL

表格

CREATE TABLE `product` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) DEFAULT NULL,
`group_code` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据

INSERT INTO `product` (`id`, `title`, `group_code`)
VALUES
(1, 't-shirt blue', 't-shirt'),
(2, 't-shirt green', 't-shirt'),
(3, 't-shirt orange', 't-shirt'),
(4, 't-shirt with image', NULL),
(5, 'sweater', NULL),
(6, 'jumsuit', NULL);

最佳答案

这会给你相同的结果。但是查询有点冒险,因为您正在分组而不是聚合结果..

SELECT *
FROM product
GROUP BY COALESCE(group_code, id)
ORDER BY 1 LIMIT 0,
2

关于MySQL 将带有 UNION 的查询更改为不带 UNION 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45981300/

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