我有以下表格
t1
| ID | 階段 |
|---|---|
| 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)
uj5u.com熱心網友回復:
FIELD() 要求每個排序依據的值是一個單獨的引數。
FIND_IN_SET() 以逗號分隔的字串形式回傳索引。
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,
find_in_set(t2.stage_id, t1.stage)
請注意,這只會更正 SQL 中的排序條件。這不一定會按該順序回傳每個組中的第一行(如果ONLY_FULL_GROUP_BY啟用了SQL 模式,則會出現錯誤)。請參閱SQL Selecting from two Tables with internal join 和 limit以了解正確的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396731.html
標籤:mysql
