mysql按选择行分组

i7uaboj4  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(368)

我有下表:

+------+---------+--------+
| lang | title   | url    |
+------+---------+--------+
| pt   | Livro 1 | o294jl |
| en   | Book 1  | o294jl |
| en   | Book 2  | 7s621f |
+------+---------+--------+

我需要分清轻重缓急 lang 当特定语言是系统语言时。例如,假设我与 pt 语言,我需要一个返回以下内容的查询:

+------+---------+--------+
| lang | title   | url    |
+------+---------+--------+
| pt   | Livro 1 | o294jl |
| en   | Book 2  | 7s621f |
+------+---------+--------+

基本上我需要为 title , langGROUP BY url 正在使用。目前基本上是最低的 id 作为一个值:

SELECT lang, title, url
FROM book
GROUP BY book.url

我试过用 ORDER BYCASE 条款,但当它在 GROUP BY 手术,没用。我可以用 GROUP_CONCATIF 选择正确的值,但由于我的实际表有多个列,它看起来不正常。
谢谢。

gmxoilav

gmxoilav1#

对于您的情况,假设您知道在整个应用程序中只有两种类型的lang,即“pt”和“en”。你可以简单地用 order by lang desc .
这是样品

SELECT b.lang, b.title, b.url
FROM book b
GROUP BY b.lang,b.title,b.url
ORDER BY b.lang DESC

但是,如果将来可能会有更多类型的lang,并且可能需要按特定的lang排序,我建议您再添加一个表来保存lang的priority值。因此,您可以按优先级排序,以获得应该首先出现的lang。
这是样品

SELECT b.lang, b.title, b.url
FROM book b 
INNER JOIN priority p ON p.lang = b.lang
ORDER BY p.order

相关问题