簡體   English   中英

SQL中的特殊條件排序查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM