我有一个帐户数据库,每个帐户都有某种等级(成员,此处将使用隐藏)
查询的范围不是问题,所以我将使用一个英文示例来说明我想要实现的目标。
SELECT * FROM accounts ... ORDER BY rank (IF rank="Hidden" THEN rank="Member") DESC
这显然不起作用,但基本上如果帐户等级是隐藏的,则应将其视为会员等级(因此为什么要隐藏)。
这可能吗?
我有一个帐户数据库,每个帐户都有某种等级(成员,此处将使用隐藏)
查询的范围不是问题,所以我将使用一个英文示例来说明我想要实现的目标。
SELECT * FROM accounts ... ORDER BY rank (IF rank="Hidden" THEN rank="Member") DESC
这显然不起作用,但基本上如果帐户等级是隐藏的,则应将其视为会员等级(因此为什么要隐藏)。
这可能吗?
这应该使用简单的CASE
;
SELECT *
FROM accounts
ORDER BY CASE WHEN rank='Hidden' THEN 'Member' ELSE rank END DESC
您可以在 order by 中使用 case 语句来修改排序:
ORDER BY
CASE
WHEN rank="Hidden" THEN 1
WHEN rank="Member" THEN 1
ELSE 0
END DESC
这使您可以根据需要对用户级别进行排名。
请参阅修改后的 SQL Fiddle - http://sqlfiddle.com/#!2/dcc71/5/0