现在一个环境是
left join 关联查询时 数据有重复
我想取重复数据中按某一时间倒叙排序的第一个
SELECT
c.name,c.creattime,f.id
FROM
F
LEFT JOIN A ON A.id = F.id
LEFT JOIN B ON B.id = F.id
left join C on C.id = F.id
group by F.id
order by A.creattime desc,B. creattime desc, C.creattime desc
我先是这么写,想取C的按顺序排好的第一个,但由于前面几个列的排序,导致结果不是想要的
然后修改成 这样
SELECT
c.name,c.creattime,f.id
FROM
F
LEFT JOIN A ON A.id = F.id
LEFT JOIN B ON B.id = F.id
left join (
select
id
from C
order by creattime desc) C
on C.id = F.id
group by F.id
order by A.creattime desc,B. creattime desc
感觉还是SQL写太少,一根筋想在最后order by 给排序
备注:
group by 要用在order by 之前、
如果单一用group by 某列 这时显示值隐式的自动按升序排列、
在用上面方法的时候 order by 不带limit,会被优化器干掉
SELECT
c.name,c.creattime,f.id
FROM
F
LEFT JOIN A ON A.id = F.id
LEFT JOIN B ON B.id = F.id
left join (
select
id
from C) C
on C.id = F.id
group by F.id
order by A.creattime desc,B. creattime desc
但我没有遇到这个问题 如果遇到 可以在第二个sql上加上limit
SELECT
c.name,c.creattime,f.id
FROM
F
LEFT JOIN A ON A.id = F.id
LEFT JOIN B ON B.id = F.id
left join (
select
id
from C
order by creattime desc limit 999999) C
on C.id = F.id
group by F.id
order by A.creattime desc,B. creattime desc