【发布时间】:2021-12-28 15:53:33
【问题描述】:
我有以下表格
t1
| id | stage |
|---|---|
| 1 | 1,2,3 |
| 2 | 2,3,4 |
t2
| id | t_id | stage_id |
|---|---|---|
| 1 | 1 | 2 |
| 2 | 1 | 1 |
| 3 | 1 | 3 |
| 4 | 2 | 2 |
| 5 | 2 | 4 |
| 6 | 2 | 3 |
希望结果可以先按t2.t_id排序,再按t1.stage的值排序
喜欢下面的结果
| t_id | stage_id |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 2 |
| 2 | 3 |
| 2 | 4 |
我有下面的sql,但是它不起作用。那我该怎么办?
SELECT
t2.t_id,
t2.stage_id
FROM
t2
LEFT JOIN t1 ON t1.id = t2.t_id
GROUP BY
t2.t_id,
t2.stage_id
ORDER BY
t2.t_id,
field(t2.stage_id, t1.stage)
【问题讨论】:
-
FIELD()要求每个值都是单独的参数,而不是单个逗号分隔的字符串。 -
使用
FIND_IN_SET()而不是FIELD() -
如果不做任何聚合,为什么还要使用 GROUP BY?为什么不简单地
ORDER BY t2.t_id, t2.stage_id?
标签: mysql