php - SQL 中按特殊条件排序查询

标签 php mysql

我有一个表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 是否可用......

也许是子查询?

谢谢

最佳答案

您可以通过 case 在标准 SQL 中执行此操作,如下所示:

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

关于php - SQL 中按特殊条件排序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034425/

相关文章:

sql - MySQL 使用 REGEX 匹配逗号分隔值中是否存在术语

mysql - 内连接返回重复的注册表

php - 如何从mysql中的parent_id获取值?

PHP mysql 获取行代码以查找另一个表项中的变量值

php - 使用php将html表单中的数据插入到mysql数据库中的数据表中

php - 将 CSV 格式的 mysql 表导出到 ZIP 文件中

php - 使用电子邮件地址从 MySQL 数据库获取行上的键值

javascript - 使用旧的 jQuery 和在新的 jQuery 上制作的脚本

php - 使用 fetch(PDO::FETCH_ASSOC) 从 MySQL 数据库回显数据;

MySQL - 具有许多 where 条件的查询性能