Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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
Php SQL:我如何找到重复值直到分离_Php_Mysql_Sql_Database_Select - Fatal编程技术网

Php SQL:我如何找到重复值直到分离

Php SQL:我如何找到重复值直到分离,php,mysql,sql,database,select,Php,Mysql,Sql,Database,Select,我想对SQL做的是在列中查找重复的值,直到有一个按日期排序的值 这是我的桌子。我对日期列使用当前的时间戳 Name |date ------------------- Bart |12-12-2014 Bart |23-12-2014 Joost |24-12-2014 Bart |25-12-2014 Bart |26-12-2014 Bart |27-12-2014 在这个例子中,我希望返回数字3和name的最后一个已知值,在这个例子中是B

我想对SQL做的是在列中查找重复的值,直到有一个按日期排序的值

这是我的桌子。我对日期列使用当前的时间戳

Name    |date     
-------------------
Bart    |12-12-2014
Bart    |23-12-2014
Joost   |24-12-2014
Bart    |25-12-2014
Bart    |26-12-2014
Bart    |27-12-2014
在这个例子中,我希望返回数字3和name的最后一个已知值,在这个例子中是Bart


我希望我说清楚了,很抱歉标题不清楚

嗯。以下是一种将逻辑置于where子句中的方法:


嗯。以下是一种将逻辑置于where子句中的方法:


您可以使用以下查询:

选择名称,将*计为cnt 从…起 选择名称、[日期], [日期]前订单上的行号- 按名称按[date]排序的分区上的行数,如grp 从mytable作为t 按名称分组 按计数订购*DESC 此查询尝试标识记录孤岛,即具有相同名称的连续行:grp computed字段正是这样做的

如果希望名称具有最大数量的连续记录,只需在上述查询中使用TOP 1


您可以使用以下查询:

选择名称,将*计为cnt 从…起 选择名称、[日期], [日期]前订单上的行号- 按名称按[date]排序的分区上的行数,如grp 从mytable作为t 按名称分组 按计数订购*DESC 此查询尝试标识记录孤岛,即具有相同名称的连续行:grp computed字段正是这样做的

如果希望名称具有最大数量的连续记录,只需在上述查询中使用TOP 1


我想不出什么可以尝试的。我之所以选择姓氏是因为这是我唯一需要的,现在我需要知道它在分离前发生了多少次。所以我有这样的代码:选择名称,时间从名称顺序由数据描述限制1;那么现在是什么时候了?我想不出什么可以尝试的。我之所以选择姓氏是因为这是我唯一需要的,现在我需要知道它在分离前发生了多少次。所以我有这样的代码:选择名称,时间从名称顺序由数据描述限制1;现在几点了?我需要两张桌子吗?还是我读错了。。。我对SQL不太在行,请原谅我的误解:@GordonLinoff@Joost . . . 这只使用一个表,引用了两次。我需要两个表吗?还是我读错了。。。我对SQL不太在行,请原谅我的误解:@GordonLinoff@Joost . . . 这只使用一个表,引用两次。
select count(*), max(lastname.name)
from tablename t cross join
     (select t2.name from tablename t2 order by date desc limit 1) as lastname
where t.name = lastname.name and
      t.date > (select max(t2.date) from tablename t2 where t2.name <> lastname.name);