[英]A sort query in SQL by special criteria
我有一個表格products
,和一個表格product-languages
。
products:
prd_id|prd_name
product-languages:
prd_id|language_id|prd_name
1 |1 |Product_German_name
1 |2 |Product_English_name
1 |4 |Product_French_name
我想在prd_id
上加入乘積語言,然后按我的language_id
優先級列表進行排序(例如:2,1,4)-首先,我想要lang_id=2
的結果,如果該結果不可用,我想擁有lang_id=1
作為第一個結果。
在SQL中這可能嗎? 我認為我的個人訂單列表是問題所在,因為我必須檢查lang_id
是否可用...
子查詢也許?
謝謝
這在MySQL中有點痛苦,但是您可以做到。 一種方法使用變量:
select t.*
from (select t.*,
(@rn := if(@prd_id = prd_id, @rn + 1,
if(@prd_id := prd_id, 1, 1)
)
) as rn
from producct_languages t join
(select @prd_id := -1, @rn := 0) params
order by prd_id, field(language_id, 2, 1, 4)
) t
where rn = 1;
您可以在標准SQL中通過case
執行以下操作:
select
*
from
products p,
product_languages l
where
p.prd_id = l.prd_id
order by
(case language_id
when 2 then 1
when 1 then 2
when 4 then 3
end) asc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.