Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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跟踪列的更改_Mysql_Sql - Fatal编程技术网

MySQL跟踪列的更改

MySQL跟踪列的更改,mysql,sql,Mysql,Sql,我的问题如下: Name Income Date --------------------------------- John 100 2014.03.03 John 100 2014.03.04 Mike 100 2014.03.04 John 200 2014.03.04 Martin 100 2014.03.04 Mike 100 2014.03.05 Mike

我的问题如下:

Name   Income   Date 
---------------------------------  
John    100     2014.03.03  
John    100     2014.03.04  
Mike    100     2014.03.04    
John    200     2014.03.04  
Martin  100     2014.03.04  
Mike    100     2014.03.05  
Mike    100     2014.03.05   
John    200     2014.03.05    
John    200     2014.03.05  
John    200     2014.03.05  
Martin  200     2014.03.05  
John    100     2014.03.05  
John    300     2014.03.05  
我想要以下输出:

Name   Income   Date
---------------------------------
John    100     2014.03.03  
Mike    100     2014.03.04  
John    200     2014.03.04  
Martin  100     2014.03.04   
Martin  200     2014.03.05   
John    100     2014.03.05   
John    300     2014.03.05   

因此,如果John的值是100,我只想得到一次(日期不重要,可以是最新的或最旧的)。但是,如果值发生变化(甚至是较早的值),我希望将其写入输出。我该怎么做

这有点不对,但是

SELECT * FROM table GROUP BY name, income;
或者使用不同的

SELECT DISTINCT name, income FROM table;

您正在使用哪些RDBMS?不。例如,John的收入是100,John的以下4行也是100,我只想要第一行或最后一行。(但只有一次)。如果它变为200,我希望它在输出中。如果它从200变为其他任何值(甚至100),我希望它再次出现在输出中。是否清楚?请尝试使用
名称、收入
group by
子句,并检测更改的值,创建一个名为“chnage”的额外列。现在,如果值发生变化,则使该列1保持为0。通过这种方式,您可以获得更新后的值。是否有任何方法可以在不添加额外列的情况下解决此问题?谢谢,但这次的答案不是Distinct:/