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");

这不能完成这项工作。请有人告诉我如何达到我想要的结果吗?提前谢谢。

您可以使用

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

最新更新