Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 使用ORDER BY对_CONCAT进行分组,但结果不按顺序排列_Mysql_Sql Order By_Subquery_Group Concat - Fatal编程技术网

Mysql 使用ORDER BY对_CONCAT进行分组,但结果不按顺序排列

Mysql 使用ORDER BY对_CONCAT进行分组,但结果不按顺序排列,mysql,sql-order-by,subquery,group-concat,Mysql,Sql Order By,Subquery,Group Concat,上面的查询工作正常,但是图像列没有按优先级排序,无法理解为什么会发生这种情况 SELECT *, (SELECT GROUP_CONCAT(url SEPARATOR '$$' ) FROM project_photos WHERE project_id = projects.id ORDER BY priority) AS images FROM projects WHERE catID = 2 LIMIT 0,5 在应用聚合函数(如GROUP\u CONCAT())后,使用ORDER BY

上面的查询工作正常,但是
图像
列没有按优先级排序,无法理解为什么会发生这种情况

SELECT
*,
(SELECT
GROUP_CONCAT(url SEPARATOR '$$' )
FROM project_photos
WHERE project_id = projects.id
ORDER BY priority) AS images
FROM projects
WHERE catID = 2
LIMIT 0,5

在应用聚合函数(如
GROUP\u CONCAT()
)后,使用
ORDER BY
进行排序。要对
GROUP_CONCAT()
的结果进行排序,请将其放入参数中:

// Structure for table project is
CREATE TABLE `projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catID` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`description` varchar(400) NOT NULL,
`url` varchar(255) DEFAULT NULL,
`tags` varchar(255) DEFAULT NULL,
`featured` varchar(3) NOT NULL DEFAULT 'No',
`featured_url` varchar(255) DEFAULT NULL,
`order` int(11) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `catID` (`catID`),
CONSTRAINT `FK_catID` FOREIGN KEY (`catID`) REFERENCES `category` (`catID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=latin1;


// Structure for table project_photos is

CREATE TABLE `project_photos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(250) DEFAULT NULL,
`project_id` int(11) DEFAULT NULL,
`priority` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=347 DEFAULT CHARSET=utf8;

尝试在
组内使用
ORDER BY

SELECT
GROUP_CONCAT(url ORDER BY priority SEPARATOR '$$')
FROM project_photos
WHERE project_id = projects.id

您应该将
order by
子句放在组concat中:

SELECT
*,
(SELECT
GROUP_CONCAT(url ORDER BY priority SEPARATOR '$$' )
FROM project_photos
WHERE project_id = projects.id
) AS images
FROM projects
WHERE catID = 2
LIMIT 0,5
外部的
orderby
正在对不同的行进行排序。因为你只有一个,它什么也不做。在group concat中,它将对由
group by
子句创建的组元素进行排序

GROUP_CONCAT(url SEPARATOR '$$' ORDER BY priority)