【发布时间】:2016-03-15 07:46:11
【问题描述】:
我有两个表“站点”和“索引日志”。表 'sites' 是有关站点的信息(用户 ID、名称、描述 ...) 表 index_log 有列 date、index_count 和 siteid。所以我想获取每个站点的最后一个和上一个 index_log 行,其中 userid = 10。这是我的变体:
SELECT ff.id,
ff.siteurl,
ff.last_count,
ff.last_date,
il2.index_count as previous_count,
MAX(il2.date) as previous_date
FROM (
SELECT s.siteurl,
s.id,
il.index_count as last_count,
MAX(il.date) as last_date
FROM sites s
LEFT JOIN index_logs il ON il.siteid = s.id
WHERE s.userid = 10
GROUP BY s.id
) as ff
LEFT JOIN index_logs il2 ON il2.siteid = ff.id AND il2.date < ff.last_date
GROUP BY ff.id
但在此变体中,index_count 列(最后一个和上一个)与最大日期行不匹配。希望对您有所帮助。
【问题讨论】:
-
这不是有效的 SQL Server 查询,看起来像 mysql?
-
是什么让你这么说@dnoeth?
-
GROUP BY不包括 SELECT 列表中的所有非聚合列... -
MS SQL 不允许这样做。你的意思是它在 MySQL 中是允许的?
-
@Squirrel:是的,这在 mysql 中做了很多(返回一些随机行),当他们切换到任何其他 DBMS 时,他们想知道为什么它不再工作了?
标签: mysql sql join group-by max