ORDER BY case when语句/多个

ORDER BY case when statement / Multiple

我想在我的请求中添加一个条款:

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
    when vendue = 'AV' then 1
    when vendue = 'VPNA' then 2
    when vendue = 'EC' then 3
else 6 end, Id DESC LIMIT 0,6

现在,我有一列 "position" (int),我想保留第一个顺序并添加 ORDER "position" 子句(类似这样的......):

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
    when vendue = 'AV' AND position ASC then 1
    when vendue = 'VPNA' AND position ASC then 2
    when vendue = 'EC' AND position ASC then 3
else 6 end, Id DESC LIMIT 0,6

或者也许...

SELECT * FROM MV_immo 
WHERE bien != 'Autre' AND bien != 'Indifférent' 
ORDER BY case
when vendue = 'AV', position ASC then 1
when vendue = 'VPNA', position ASC then 2
when vendue = 'EC', position ASC then 3
else 6 end, Id DESC LIMIT 0,6

我的目标是保持第一个订单 (ORDER BY vendue) 并添加第二个 ORDER 子句:位置。
我需要你的帮助,因为我刚开始 php 这对我来说并不简单。
我该怎么做?

如果我没理解错的话,你想要:

ORDER BY (case when vendue = 'AV' then 1
               when vendue = 'VPNA' then 2
               when vendue = 'EC' then 3
               else 6
          end),
         position,
         Id DESC

如果你愿意,你可以缩短它:

order by field(vendue, 'EC', 'VPNA', 'AV') desc, position, id

请注意,在 field() 调用中,这些值的顺序是 反向