MYSQLI从表中获取结果:显示所有用户(但首先显示豪华和高级用户)?

时间:2019-03-31 21:13:21

标签: php mysqli

我的数据库中有一个名为user_data的表。 我想从该表中选择所有数据行,其中用户的advert_status为“有效”。

但是,此表中还有一列称为advert_type。的枚举值为:

Deluxe, Premium and Basic. 

我想执行MYSQLI查询,并在advert_status处于活动状态的表中列出所有用户。但是我想按此顺序列出豪华用户,然后是高级用户和基本用户。

所需结果:

Deluxe User 1
Deluxe User 2
Deluxe User 3
Premium User 1
Premium User 2
Basic User 1
Basic User 2

这就是我尝试过的。

$variable = $_GET['r'];
             if($variable == '0') {
             $query = $conn->query("SELECT * FROM user_data WHERE advert_status = 'Active' ORDER BY advert_type");

这不起作用。请有人能告诉我如何达到我想要的结果吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用order by case when来满足您的要求:

 SELECT * FROM user_data 
 WHERE advert_status = 'Active' 
 ORDER BY
    Case when advert_type = "Deluxe" then 1
         when advert_type = "Premium" then 2
         else 3 end asc