gpt4 book ai didi

MYSQL使用FIELD函数和多列自定义顺序

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

我有一个名为data的表,有2列typestatus,如下所示:

TYPE        STATUS

deposit 1
deposit 1
deposit 2
deposit 3
deposit 0
transfer 1
transfer 2
transfer 3
transfer 0
transfer 1

我需要将 status 顺序设置为(1, 2, 3,然后 0),但是当 status1 时我需要先输入deposit类型,然后输入transfer类型,对于其余的状态,我只需要它们为(2, 3, then 0),而不需要注意类型。

使用这个查询我只能解出一半的谜题:

select * from data order by FIELD(status, '1', '2', '3', '0')

结果:

TYPE        STATUS

deposit 1
transfer 1
transfer 1
deposit 1
deposit 2
transfer 2
deposit 3
deposit 3
transfer 0
deposit 0

需要的结果是:

TYPE        STATUS

deposit 1
deposit 1
transfer 1
transfer 1
deposit 2
transfer 2
deposit 3
deposit 3
transfer 0
deposit 0

提前谢谢您!

最佳答案

如果你不想被 FIELD 束缚如果状态值的数量发生变化,您必须更新的表达式,您可以按 STATUS > 0 DESC 排序首先(这会将 STATUS 的所有正值排序在 0 值之前),然后按 STATUS 排序。 (将正值排序为 1、2、3 等),然后按 TYPE (因为 deposit 按字母顺序位于 transfer 之前):

SELECT *
FROM data
ORDER BY STATUS > 0 DESC, STATUS, TYPE

输出:

TYPE        STATUS    
deposit 1
deposit 1
transfer 1
transfer 1
deposit 2
transfer 2
deposit 3
deposit 3
transfer 0
deposit 0

Demo on dbfiddle

关于MYSQL使用FIELD函数和多列自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257252/

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