我在下面有sql,它想要做多个订单。
SELECT
r.*,
s.uzunluq,
b.id,
au.status_id as aksessuar_status,
au.aksessuar_id,
au.aksessuar
FROM
seksiya s,
result r
LEFT JOIN bosh_seksiya_aksessuar b
ON
b.bosh_seksiya = r.model AND
b.ERK = :ses
LEFT JOIN aksessuar_up au
ON au.model_id = r.res_id AND
au.user_id = :user_id AND
au.status_id = 9
WHERE
r.user_id = :user_id AND
r.model=s.seksiya AND
s.erk = :ses AND
r.status_id IN (1,2,3,4,5)
ORDER BY
r.res_id我认为编写PDO对你们来说并不重要,因为我的问题只是关于这个sql的。这个sql运行得很好,我只想添加额外的函数。因此,请参阅本专栏:r.status_id IN (1,2,3,4,5)
我给了Order BY r.res_id
我的问题是:我想对每个status_id使用多个顺序
如何订购:
ORDER BY r.res_id DESC WHERE r.status_id IN (1,2)
和
ORDER BY r.res_id WHERE r.status_id IN (3,4,5)
在这个sql中?
发布于 2014-02-24 08:11:38
ORDER BY IF(r.status_id IN (1,2), r.res_id, NULL) DESC, r.res_id使用此ORDER BY子句排序的记录集将首先显示使用r.status_id IN (1,2)进行排序的所有记录(因为NULL值按降序排列),它们本身按r.res_id的降序排序;其次是由r.res_id按升序排序的所有其他值。
发布于 2014-02-24 08:06:09
您可以使用联合语法:
SELECT * FROM ((SELECT
r.*,
s.uzunluq,
b.id,
au.status_id as aksessuar_status,
au.aksessuar_id,
au.aksessuar,
1 as query_order
FROM
seksiya s,
result r
LEFT JOIN bosh_seksiya_aksessuar b
ON
b.bosh_seksiya = r.model AND
b.ERK = :ses
LEFT JOIN aksessuar_up au
ON au.model_id = r.res_id AND
au.user_id = :user_id AND
au.status_id = 9
WHERE
r.user_id = :user_id AND
r.model=s.seksiya AND
s.erk = :ses AND
r.status_id IN (1,2)
ORDER BY
r.res_id DESC) as table1
UNION
(SELECT
r.*,
s.uzunluq,
b.id,
au.status_id as aksessuar_status,
au.aksessuar_id,
au.aksessuar,
0 as query_order
FROM
seksiya s,
result r
LEFT JOIN bosh_seksiya_aksessuar b
ON
b.bosh_seksiya = r.model AND
b.ERK = :ses
LEFT JOIN aksessuar_up au
ON au.model_id = r.res_id AND
au.user_id = :user_id AND
au.status_id = 9
WHERE
r.user_id = :user_id AND
r.model=s.seksiya AND
s.erk = :ses AND
r.status_id IN (3,4,5)
ORDER BY
r.res_id) as table2) sa table3 ORDER BY query_orderhttps://stackoverflow.com/questions/21982072
复制相似问题