单个SQL查询以按特定顺序检索数据(不是ASC / DESC)

时间:2014-12-04 10:14:50

标签: php mysql sql

我有一个名为评论

的MySQL表
review_id, product_id, language_id, rating, review, author
对于10种不同的语言,

language_id 的范围为 1到10

假设我确定我的访问者正在使用ID为4的语言浏览网站

有没有办法编写单个查询: 1.首先用当前语言抓取该产品的评论 2.接下来,使用按语言排序的其他语言抓取该产品的评论

因此,以下2个查询的工作基本上是一个接一个地运行:

SELECT * FROM reviews WHERE product_id = 723 AND language_id = 4;
SELECT * FROM reviews WHERE product_id = 723 AND language_id != 4 ORDER BY language_id ASC;

2 个答案:

答案 0 :(得分:2)

SELECT * FROM reviews WHERE product_id = 723 AND language_id = 4

UNION 
SELECT * FROM reviews WHERE product_id = 723 AND language_id != 4 ORDER BY language_id ASC;

<强>解释

您的要求非常简单。

你有两个SQL,你想要一个组合的outout。

由于表格也是相同的字段,请使用MySQL UNION

答案 1 :(得分:2)

SELECT * FROM reviews WHERE product_id = 723
order by case when language_id = 4 then 0 else 1 end, language_id;