我得到了一些值得思考的东西,并且无法得出答案。让我们看一下''员工样本数据库(employees schema)。我的任务是,找到没有人修改他/她的工资的最长时间,即:我需要从记录中找到from_date属性,其中它与后续记录的from_date属性之间的差异是其他类似的最大值(记录,后续记录)属性元组。我的问题是:这可以在不使用存储过程和函数的情况下完成吗?我被告知这应该是一个很难的,但如果使用一个函数它是一个非常简单的最大选择 - 或者它不是?我正在使用MySQL 5.1。提前谢谢!
答案 0 :(得分:1)
可能不是最有效的,但
SELECT TOP 1
datediff(s1.from_date
,(select top 1 s2.from_date from salaries s2
where s2.from_date > s1.from_date order by s2.from_date))
AS daysSinceChange
FROM salaries s1
ORDER BY daysSinceChange DESC
答案 1 :(得分:0)
我不知道日期,但是对于整体......
Select max(sub.x - tbl.x)
From table_name tbl,
(Select min(tbl2.x) x
From table_name tbl2
Where (matches outer record)
And tbl2.x >= tbl.x) sub;
基本上,选择x和y的最大差异,其中y是与同一用户相对应的最小日期,但其值大于与其进行比较的值。如果这是合法的,那么这些方面应该有用。