【发布时间】:2021-04-04 12:59:21
【问题描述】:
您好,我正在尝试使用 MySql 准备树结构,表格看起来像这样。
|id |parent_id | |entry_id| name |lang |
|-----|----------| |--------|-------|------|
| 1 | 0 | | 1| ABC | eng |
| 2 | 1 | | 1| BCD | fra |
| 3 | 2 | | 2| EFG | eng |
| 4 | 2 | | 2| HIJ | fra |
| 5 | 2 | | 3| WYX | eng |
我的问题是:
- 是否可以进行左连接并按名称对列进行排序,但如果在 lang 中 eq 为“fra”,则返回具有该名称的行,否则返回“eng”名称。
伪代码
SELECT id, name FROM table LEFT JOIN table2 ON id = entity_id
WHERE (IF lang = 'fra' return french name otherwise return just english name) GROUP BY entry_id ORDER BY name ASC
所以最终的结果会是这样的,总的来说“fra” lang 具有优先权,所有结果都应该按名称排序。
| id| name |lang |
|--------|-------|------|
| 1| BCD | fra |
| 2| HIG | fra |
| 3| WYX | eng |
【问题讨论】:
-
是什么阻止你尝试这个?
-
我不知道如何写“if 语句”,如果两种语言都存在,则只返回一个“法语”,忽略“英语”,但如果只有“英语”可用,则返回它。
-
喜欢在 HAVING lang = "fra" 中添加一些东西,但如果不存在则只返回一个 "eng"
-
对子查询有什么想法吗?
标签: mysql sql left-join case greatest-n-per-group