gpt4 book ai didi

php - 向上排序表中的字段mysql

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

我有一个名为 user 的列。我有这样的字段:user1、user2、...、user10、user11、user12、user20。但是字段并不总是由用户开始

我想对这些字段进行向上排序,即我正在执行以下查询:

SELECT * FROM table ORDER BY user ASC

此查询返回:用户 1、用户 10、用户 11、用户 12、用户 2、用户 20

我想要的排序如下:用户 1、用户 2、用户 11、用户 12、用户 20

我该怎么做?我使用的编程语言是php

最佳答案

最好再添加一个包含用户位置的列,然后按该列排序。但是,如果您不能更改表结构,则像这样的查询应该以正确的顺序返回您的行:

SELECT
tablename.*
FROM
tablename
ORDER BY
SUBSTR(user,
LEAST(
CASE WHEN LOCATE('0', user)>0 THEN LOCATE('0', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('1', user)>0 THEN LOCATE('1', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('2', user)>0 THEN LOCATE('2', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('3', user)>0 THEN LOCATE('3', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('4', user)>0 THEN LOCATE('4', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('5', user)>0 THEN LOCATE('5', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('6', user)>0 THEN LOCATE('6', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('7', user)>0 THEN LOCATE('7', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('8', user)>0 THEN LOCATE('8', user) ELSE LENGTH(user) END,
CASE WHEN LOCATE('9', user)>0 THEN LOCATE('9', user) ELSE LENGTH(user) END
)) + 0

请参阅 fiddle here .

关于php - 向上排序表中的字段mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970096/

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