Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 比较两个不同日期的字段值的SQL查询_Mysql_Compare - Fatal编程技术网

Mysql 比较两个不同日期的字段值的SQL查询

Mysql 比较两个不同日期的字段值的SQL查询,mysql,compare,Mysql,Compare,我有一张桌子: Date Name Rating 01-Dec-14 Ash A 02-Dec-14 Ash A 03-Dec-14 Ash AA 04-Dec-14 Rob BB 05-Dec-14 Rob BB 06-Dec-14 Charly A 07-Dec-14 Charly AA 我只想写一个sql查询,它给我日期/名称/评级,评级在日期之间发生了变化。更准确地说,我想知道在一段时间内,哪一个名字的评级何时发生变化 非常感谢。最简单的方法

我有一张桌子:

Date    Name    Rating
01-Dec-14   Ash A
02-Dec-14   Ash A
03-Dec-14   Ash AA
04-Dec-14   Rob BB
05-Dec-14   Rob BB
06-Dec-14   Charly  A
07-Dec-14   Charly  AA
我只想写一个sql查询,它给我日期/名称/评级,评级在日期之间发生了变化。更准确地说,我想知道在一段时间内,哪一个名字的评级何时发生变化


非常感谢。

最简单的方法是使用变量枚举行,然后聚合:

select name, rating, min(date) as firstdate, maxdate(lastdate)
from (select t.*,
             (@grp := if(@nr = concat_ws(':', name, rating), @grp,
                        if(@nr := concat_ws(':', name, rating), @grp + 1, @grp + 1)
                        )
             ) as grp
      from table t cross join
           (select @grp := 0, @nr := '') params
      order by name, date
     ) t
group by name, grp, rating;

我认为我们必须根据比率维护历史记录表,这在“简单SQL查询”中是不可能的,因为使用简单SQL无法在行之间进行比较。您需要使用游标或程序来完成此操作。