我有自动更新的行。有时行会更新(通过新的插入 - 几乎重复的行),其中某些列保持不变 - 而其他列具有新值。我想拉出最新的最新行;所有值。这是我所拥有的
SELECT * FROM
(SELECT * FROM
(SELECT * FROM entries
WHERE dataset_id = xxx
ORDER BY time_added DESC
) alias1 GROUP BY title
) alias2 ORDER BY timestamp
- 在此
列表中向后工作:
选择 #1> 根据最初创建(未添加)的时间戳对要显示的时间戳重新排序
选择 #2>筛选器 选择 #3 以选择不同的标题值(最新的标题)
选择 #3> 实际执行的第一个查询。获取按添加的时间戳排序的数据集
有没有更有效的方法可以做到这一点?我从中闻到了严重的代码难闻的气味。
使用group by
和join
:
select e.*
from entries e join
(select title, max(time_added) as maxta
from entries e
where dataset_id = xxx
group by title
) emax
on emax.title = e.title and e.time_added = emax.maxta
where dataset_id = xxx
order by e.timestamp;
您的方法使用 MySQL 扩展来group by
,其中select
列表中的列不在group by
中。 这被显式记录以返回不确定的结果。 不要使用记录为不起作用的功能,即使它们在某些情况下看起来不起作用。