gpt4 book ai didi

mysql - SQL自定义排序

转载 作者:行者123 更新时间:2023-11-29 02:11:00 24 4
gpt4 key购买 nike

我有一个名为 Tasks 的表,如下所示。表格中的字段是员工、任务和日期。

输入表:

Date:       employees   Task
2016-12-03 John Paint the walls pink
2016-12-03 Sam Play hockey on linoleum
2016-12-03 John the golden fish in a bucket
2016-12-03 Sam Create a rink on the porch
2016-12-03 Nathan Glue the front door
2016-12-03 Nathan Paint the walls pink
2016-12-08 Sam Melt the doorknob
2016-12-08 Dewey Wrap the cat in toilet paper
2016-12-08 John Give bubble gum to the dog
2016-12-08 Dewey Order 20 pizzas
2016-12-09 John Create a rink on the porch
2016-12-09 Nathan Eat all the candies
.......
...... so on

对于输出,我想选择一个列表,该列表首先根据日期排序,然后根据特定的员工顺序排序(约翰第一,内森第二,山姆第三,杜威第四)。

Output:
Date: employees Task
2016-12-03 John Paint the walls pink
2016-12-03 John the golden fish in a bucket
2016-12-03 sam Play hockey on linoleum
2016-12-03 Sam Create a rink on the porch
2016-12-03 Nathan Glue the front door

..
..
.... so on.

我尝试使用 ORDER BY。我怎样才能按照上面提到的特定顺序完成排序?还是我需要了解一些其他概念?任何帮助将不胜感激。

最佳答案

您可以使用 FIELD() 功能。函数详情如下:

FIELD(str,str1,str2,str3,...)

Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.

现在,FIELD(employees, 'John', 'Nathan', 'Sam', 'Dewey')如果 employees 函数将返回 0不在 ('John', 'Nathan', 'Sam', 'Dewey') 中.

所以,如果我们使用 ORDER BY FIELD(employees, 'John', 'Nathan', 'Sam', 'Dewey')只是,其他不匹配 行将出现在顶部。所以,我们可以使用 If() 函数为其他不匹配行返回1,为匹配行返回0

现在,我们可以利用 FIELD(employees, 'John', 'Nathan', 'Sam', 'Dewey') 的更多一级排序.这将确保匹配的 ID 按照 Field() 中指定的顺序首先出现。功能。

尝试:

SELECT * 
FROM your_table
ORDER BY `date` ASC,
IF(FIELD(employees, 'John', 'Nathan', 'Sam', 'Dewey') = 0, 1, 0) ASC,
FIELD(employees, 'John', 'Nathan', 'Sam', 'Dewey') ASC

关于mysql - SQL自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52671206/

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