gpt4 book ai didi

mysql - 基于 MySQL 中列的值交替行

转载 作者:行者123 更新时间:2023-11-29 08:59:48 27 4
gpt4 key购买 nike

我在 mysql 中选择交替行时遇到问题 -图片:

CREATE TABLE `images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`file` varchar(255) DEFAULT NULL,
`project_id` int(10) unsigned DEFAULT NULL,
);

并且希望能够以具有 Project_id IS NOT NULL 交替值的方式从图像表中选择行。基本上:

  • 带有project_id的图片
  • 不带project_id的图片
  • 带有project_id的图片
  • 不带project_id的图片
  • 带有project_id的图片
  • 不带project_id的图片

如何在一个 SQL 查询中完成这一任务?我试过:

SELECT `images`.*, 
IF(images.project_id, images.project_id % 2, images.id % 2) AS `mixer`
FROM `images` AS `images`
ORDER BY `mixer` DESC

但这不是我需要的。此外,最终的查询可能会有一个“GROUP BY images.id”,所以如果解决方案不会搞乱查询,那将是非常受欢迎的。

最佳答案

有趣的挑战。试试这个:

SELECT images.*, 
FROM images, (SELECT @x:=-1, @y:=0) c
ORDER BY CASE WHEN project_id is not null THEN @x:=@x+2 ELSE @y:=@y+2 END;

其工作原理是根据条件递增两个值 @x@y 之一,并让您想要订购的值首先以较低的初始值开始。从运行中可以看出,评估结果在 1, 2, 3, 4, ... 范围内:

SELECT CASE WHEN project_id is not null THEN @x:=@x+2 ELSE @y:=@y+2 END z, images.*, 
FROM images, (SELECT @x:=-1, @y:=0) c
ORDER BY z;

关于mysql - 基于 MySQL 中列的值交替行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986942/

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