gpt4 book ai didi

mysql - ORDER BY 跨 Postgresql 中的多个列

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

作为示例,让我们考虑 Postgres SQL 数据库中的下表 players

name            username*        score*
--------------------------------------
Jack Daniels PerfectJack 100
- JohnDoe 20
- MadMike 500
Ben Tailor Tailor3d 10

(* = required)

我想查询该表并输出以下内容(伪代码)

SELECT (ISSET name ? name : username, score) 
FROM players
ORDER BY (ISSET name ? name : username)

这应该导致

player         score
--------------------
Ben Tailor 10
Jack Daniels 100
JohnDoe 20
MadMike 500

为了澄清:让我们假设一个网络应用程序,用户使用用户名注册。他也可以输入他的真实姓名,但不是必须的。当显示玩家列表时,网络应用程序应该能够输出真实姓名(如果设置)并回退到用户名(如果未设置姓名)并在这两列之间进行排序(即,如果可用于订购,则使用真实姓名,否则使用用户名)。

如何使用 Postgres SQL 语句实现此行为?

最佳答案

这可以使用 COALESCE 来完成:

SELECT 
COALESCE(name, username) AS player,
score
FROM
players
ORDER BY
COALESCE(name, username);

此外,避免在您的对象中使用保留字 - 例如“名称”。

关于mysql - ORDER BY 跨 Postgresql 中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132598/

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