SQL中按特殊条件的排序查询

时间:2017-07-11 12:18:18

标签: php mysql

我有一张表#include <stdio.h> void displayArray(); int main() { int size; printf("Hello. What will be the size of the new array?\n"); scanf("%d", &size); int myarray[size]; for (int i = 0; i < size; i++) { printf("Enter the %d. element\n" , (i + 1)); scanf("%d", &myarray[i]); } displayArray(myarray[size], size); return 0; } void displayArray(int myarray[], int size) { printf("Your array is: "); for (int i = 0; i < size; i++) { printf("%d ", myarray[i]); } return; } 和一张表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优先级列表对其进行排序(例如:2,1,4) - 首先我想要{{1}的结果如果这不可用,我希望language_id作为第一个结果。

这在SQL中可行吗?我认为我的个人订单是问题,因为我必须检查lang_id=2是否可用......

可能是子查询?

由于

2 个答案:

答案 0 :(得分:0)

这在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;

答案 1 :(得分:0)

您可以通过{{1}}在标准SQL中执行此操作,例如:

{{1}}