gpt4 book ai didi

MySQL 对两个子集进行排序

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

我一直在尝试找出一种方法来对表的几个不同子集进行本质上的排序。想象一下这两个表:

City
id name
1 ACity
2 BCity
3 CCity

Project
id name type city
1 AP 0 ACity
2 BP 1 ACity
3 CP 1 BCity
4 DP 1 CCity
5 EP 1 ACity
6 FP 0 CCity

我想要的是显示至少有 1 个类型 0 的项目首先列出的所有城市。列出了该城市的所有项目,类型 0 的项目位于顶部(然后按字母顺序排序)。随后将按字母顺序显示任何没有类型 0 项目的城市。因此对于这个例子,结果将是:

Desired result:
ACity AP
BP
EP
CCity FP
DP
BCity CP

我已经尝试了几种方法,但无法使其正常工作。如果有任何帮助,我将不胜感激。

最佳答案

<强> SQL DEMO

SELECT *
FROM Projects P
LEFT JOIN (SELECT city, COUNT(city) as top_city
FROM Projects
WHERE type = 0
GROUP BY city) R
ON P.city = R.city
ORDER BY R.top_city DESC,
P.city,
P.type,
P.name

输出:我包含了用于调试的所有列,但您可以将结果限制为 P.City 和 P.Name

enter image description here

关于MySQL 对两个子集进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53288475/

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