gpt4 book ai didi

php - 按多列对 MYSQL 结果进行排序

转载 作者:行者123 更新时间:2023-12-01 00:52:55 25 4
gpt4 key购买 nike

好的,所以我已经阅读了我写这个问题时提出的 14 个 Stack Overflow 建议,我已经尝试了所有方法,但无法弄清楚。

我有一个带有评论的健身房目录。我有一个脚本,您可以通过邮政编码、城市/州或邻里/城市/州搜索这些健身房。

我在后端和数据库中有几个字段。与此问题相关的是优先级(我给它一个数字 1+,它应该显示最高优先或最低优先我不在乎哪个最好从最高到最低),照片(它可以有 5 张照片),成员(member)资格包括(a健身房可以包括在成员(member)资格中的一些东西)和评论(不可编辑,但会记录健身房有多少评论)

我想按这个顺序排序

如果健身房有优先权,它应该首先显示,因为它具有优先权。 Null 优先级应该排在最后,然后按照片排序并不重要 a-z z-a 只是 null 排在最后,然后按成员资格排序包括 null 排在最后,然后按评论计数 0 或 null 排在最后。

因此,如果我有 4 个健身房,A 和 B 有优先权、照片和成员(member)资格,但评论为 0,C 没有优先权,没有照片,没有成员(member)资格,但最高评论数为 2,D 没有优先权,但有照片和成员(member)资格,但 1 条评论:它应该按以下顺序排序:

GYM   Priority   Photo      Membership   Reviews
A yes has some has count 0
B yes has some has count 0
C no no no memb. 2
D no has some has count 1

预期排序结果:A B D C

对不起,那是困惑的。

这是我已经尝试过的:

SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY priority ORDER BY photo, member_includes, reviews DESC) x LIMIT 0, 150

SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") ORDER BY priority, photo, member_includes, reviews DESC) x LIMIT 0, 150

SELECT * FROM (SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY photo, member_includes, reviews ORDER BY priority DESC) x LIMIT 0, 150

SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") GROUP BY photo, member_includes, reviews ORDER BY priority DESC LIMIT 0, 150

SELECT * FROM gym WHERE (city = "Queens") AND (state = "NY") ORDER BY priority, photo, member_includes, reviews DESC LIMIT 0, 150

我已经尝试了所有其他类型的组合,无论是否使用 ASC,但仍然无法正确排序。我不知道我做错了什么。

请帮忙!

谢谢,大卫

最佳答案

我相信这就是您要找的:

SELECT * FROM gym
WHERE city = "Queens" AND state = "NY"
ORDER BY
ISNULL(priority), priority,
ISNULL(photo),
ISNULL(member_includes), member_includes,
ISNULL(reviews), reviews DESC
LIMIT 150

关于php - 按多列对 MYSQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13665927/

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