【发布时间】:2013-09-22 12:45:23
【问题描述】:
+----+------------+------+
| id | title | lang |
+----+------------+------+
| 1 | title 1 EN | en |
| 1 | title 1 FR | fr |
| 1 | title 1 ZH | zh |
| 2 | title 2 EN | en |
| 3 | title 3 ZH | zh |
+----+------------+------+
这是我的桌子,我想按 id 分组,但有时我需要语言“en”优先,有时我需要语言“zh”作为优先级
SELECT * FROM table GROUP BY id
给我一个所有 uniqe id 的列表,但将 zh 放在 id 1 的位置,我可以为语言添加优先级吗?
我想要的“en”输出:
+----+------------+------+
| id | title | lang |
+----+------------+------+
| 1 | title 1 EN | en |
| 2 | title 2 EN | en |
| 3 | title 3 ZH | zh |
+----+------------+------+
我想要的“fr”输出:
+----+------------+------+
| id | title | lang |
+----+------------+------+
| 1 | title 1 FR | fr |
| 2 | title 2 EN | en |
| 3 | title 3 ZH | zh |
+----+------------+------+
我想要的..不断地:)
【问题讨论】:
-
ORDER BY lang DESC/ASC - 在 GROUP BY 子句之后
-
你想要的输出是什么?
-
但是我有可能有一个额外的 id 和 lang "fr" 那么我怎么能支持 fr 呢?
-
SELECT * FROM table WHERE lang = x;那么我想这就是你所需要的......因为 GROUP BY 无论如何都会合并记录,对吧? -
如果我放一个 where lang="fr" 我不会得到 id 2 和 3 的记录