Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将带UNION的查询更改为不带UNION的查询_Mysql - Fatal编程技术网

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

MySQL将带UNION的查询更改为不带UNION的查询,mysql,Mysql,我如何才能将此查询更改为一个查询,而不使用联合或子查询?允许加入 问题在于,某些产品在group\u code列中使用一个值进行分组。这意味着在查询结果中只应返回一个。我使用的是Doctrine querybuilder,无法使用联合查询或子查询。 我尝试通过执行两个查询并将结果与PHP结合来解决这个问题。但是当我尝试对结果进行分页时,我会说limit2,这将返回4个结果,因为两个查询都将得到2个结果 询问 通缉结果: 桌子 资料 这将给你同样的结果。但是查询有点冒险,因为您正在分组而不是聚合结

我如何才能将此查询更改为一个查询,而不使用联合子查询?允许加入

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

询问 通缉结果: 桌子 资料
这将给你同样的结果。但是查询有点冒险,因为您正在分组而不是聚合结果

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

您应该能够在这样的原则中使用原始sql<代码>$this->getDoctrine()->getManager();->getConnection()->prepare($sql)@RaymondNijland,是的,但在这部分代码中,我需要使用QueryBuilder。这不支持原始查询。您支持此查询的目的是什么?@JanZeiseweis,我需要产品表中的所有记录,并且必须对具有相同组码的记录进行分组。分页也应该是可能的。您对风险部分的意思是什么?返回的内容始终取决于您将其插入表中的顺序。假设您有一个包含名称和街道的表,您运行
按名称从名称组中选择名称,街道
如果您有两次相同的名称,您将返回一条街道,但您不知道实际上有另一条街道具有相同的名称。
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