City | Person City | Person
-------------- -------------
C | Fanie D | Jan
C | Johannes D | Maria
C | Anna to J | Frik
D | Jan C | Anna
D | Maria C | Fanie
J | Frik C | Johannes
我希望^ table就像这个^。
我试图说Select * FROM TableA GROUP BY City ='D', City = 'J' City = 'C'
,但是名字不是如上所示的顺序?我怎么做到这一点?或者如何按列值进行聚类并对名称进行排序。 ?
答案 0 :(得分:1)
试试这个:
SELECT City, Person
FROM TableA
WHERE City IN ('C', 'D', 'J')
ORDER BY
(CASE City
WHEN 'D' THEN 1
WHEN 'J' THEN 2
WHEN 'C' THEN 3
ELSE 4 END),
Person;
答案 1 :(得分:1)
对于自定义排序或基于某些规则的排序,可以按以下方式按顺序使用case语句并执行它
Select * FROM TableA order by case when city ='D' then 1
when city ='J' then 2 else 3 end, Person
你能试试吗?
答案 2 :(得分:0)
select * from TableA ORDER BY City,Person
如果您想按城市排序,然后按人员排序,这应该有效,但是从您的输出中我看不到任何排序。
答案 3 :(得分:0)
我不知道为什么你需要这样做我希望这会对你有所帮助! 我使用MySQL的CASE功能我提供的解决方案是当城市等于'D'时它将是第一个排序然后如果City ='C'那么它将是第二个ELSE它将是最后一个
SELECT * FROM TableA GROUP BY City,Person ORDER BY CASE WHEN City = 'D' THEN 1 WHEN 'C' THEN 2 ELSE 3 END