gpt4 book ai didi

php - 如何对 MYSQL 查询进行排序以按字母顺序显示,数字最后,并且排序中不包含单词 "The"

转载 作者:行者123 更新时间:2023-11-29 06:14:17 25 4
gpt4 key购买 nike

基本上我有一个 PHP MYSQL 查询,它返回 16 个项目。其中 15 个以字母 A-Z 开头,一个以数字开头(产品名称为“3d Star Gazer”)。在常规查询中,按字母顺序排序会显示第一个按数字开头的项目。我希望列表按字母顺序排序,最后显示 3d Star Gazer。

这可能吗?

SELECT t1.id, t2.name, t2.manufacturer
FROM db.t1
LEFT JOIN db.t2 ON t1.id = t2.id
WHERE year = '2011'
ORDER BY t2.name ASC

我看到了这个链接:Sort MySQL results alphabetically, but with numbers last但该解决方案对我不起作用......

作为次要问题,是否可以在排序中不包含“The”一词?例如,一个游戏名为“The Guessing Game”,我希望它显示为“G”,而不是“T”。

最佳答案

使用 IF() 运算符并添加两列来控制排序顺序:

SELECT t1.id, t2.name, t2.manufacturer,
IF(LEFT(t2.name, 1) BETWEEN '0' AND '9', 2, 1) as sortOrder1,
IF(t2.name LIKE 'The _%', SUBSTRING(t2.name FROM 5), t2.name) as trimmedName
FROM db.t1
LEFT JOIN db.t2 ON t1.id = t2.id
WHERE year = '2011'
ORDER BY sortOrder1, trimmedName;

LIKE 运算符模式中的下划线匹配任何单个字符,用于确保返回的子字符串不会为空。

如果您不希望最终输出中出现额外的列,请将上面的 select 语句包装在另一个语句中:

SELECT id, name, manufacturer FROM ([select statement above]) a;

关于php - 如何对 MYSQL 查询进行排序以按字母顺序显示,数字最后,并且排序中不包含单词 "The",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503681/

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