0

我有一个帐户数据库,每个帐户都有某种等级(成员,此处将使用隐藏)

查询的范围不是问题,所以我将使用一个英文示例来说明我想要实现的目标。

SELECT * FROM accounts ... ORDER BY rank (IF rank="Hidden" THEN rank="Member") DESC

这显然不起作用,但基本上如果帐户等级是隐藏的,则应将其视为会员等级(因此为什么要隐藏)。

这可能吗?

4

2 回答 2

3

这应该使用简单的CASE;

SELECT * 
FROM accounts 
ORDER BY CASE WHEN rank='Hidden' THEN 'Member' ELSE rank END DESC

一个非常简单的 SQLfiddle 来测试

于 2013-06-22T19:04:40.217 回答
2

您可以在 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

于 2013-06-22T19:03:22.013 回答