有一个MySQL查询:
SELECT pesp.position, name, pesp.id_plan
FROM pp_stages pps
LEFT JOIN pp_ex_stage_position pesp ON pesp.id_stage = pps.id
ORDER BY id_plan <> 2, IF(position IS NULL,1,0), position
它返回一个排序表:
需要删除重复的行。同时,你需要保持秩序,去除后续的重复。
结果应该是这样的:
如何完成查询,使其能够执行此操作?
像这样尝试过,但是查询取消了顺序并删除了不是后续的重复,而是第一个
SELECT *
FROM (SELECT pesp.position, name, pesp.id_plan
FROM pp_stages pps
LEFT JOIN pp_ex_stage_position pesp ON pesp.id_stage = pps.id
ORDER BY id_plan <> 2, IF(position IS NULL,1,0), position
) tbl
GROUP BY tbl.name



您没有提供表结构和源数据,我们将假设该表
pp_ex_stage_position有自己的 id 并且 name 字段在 table 中pp_stages。那么请求可能如下所示:或者使用变量,一次通过表,如下所示:
我还提请您注意,如果
pp_ex_stage_position表中没有合适的条目,那么您的条件IF(position IS NULL,1,0)将order by不会给出任何内容,由于排序中的第一个条件,NULL 仍将位于最开始。