Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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_Select_Group By - Fatal编程技术网

MySQL:从组中选择最后一个,但有条件

MySQL:从组中选择最后一个,但有条件,mysql,sql,select,group-by,Mysql,Sql,Select,Group By,我有下表: name created_for created_on status jen 2012-05-27 2012-02-15 12:14:09 Y joe 2012-10-01 2012-02-15 12:22:09 Y bob 2012-10-01 2012-02-15 12:47:09 N jim 2012-10-01 2012-02-24 12:47:09 N jim 2

我有下表:

name     created_for created_on            status
jen      2012-05-27  2012-02-15 12:14:09    Y
joe      2012-10-01  2012-02-15 12:22:09    Y
bob      2012-10-01  2012-02-15 12:47:09    N
jim      2012-10-01  2012-02-24 12:47:09    N
jim      2012-10-01  2012-02-29 12:47:09    Y
sam      2012-10-01  2012-03-11 12:47:09    N
sam      2012-10-01  2012-03-15 12:47:09    C
sam      2012-10-01  2012-03-22 12:47:09    Y
tom      2012-10-01  2012-04-10 12:47:09    N
tom      2012-10-01  2012-04-11 12:47:09    N
我想返回的是姓名的最后一行,为每个创建了2012-10-01日期的姓名的人创建的,但前提是最后一个条目的状态为N。因此,对于上表,我想返回:

name     created_on
bob      2012-02-15 12:47:09
tom      2012-04-11 12:47:09
状态条件是什么让我抓狂。我似乎不知道在哪里放置“where status='N'”以获得正确的结果。

尝试以下方法:

 SELECT t1.*
 FROM
 (
    SELECT name, MAX(created_on) MaxDate
    FROM YourTableName
    GROUP BY name
  ) t1 INNER JOIN YourTableName t2  on t1.name    = t2.name 
                                   AND t1.MaxDate = t2.created_on
 WHERE t2.created_for = '2012-10-01'
   AND t2.status = 'N'
试试这个:

 SELECT t1.*
 FROM
 (
    SELECT name, MAX(created_on) MaxDate
    FROM YourTableName
    GROUP BY name
  ) t1 INNER JOIN YourTableName t2  on t1.name    = t2.name 
                                   AND t1.MaxDate = t2.created_on
 WHERE t2.created_for = '2012-10-01'
   AND t2.status = 'N'


您当前使用的查询是什么?您当前使用的查询是什么?这适用于上表的子集,但只要我添加另一行,如:
bob 2012-10-04 2012-07-07 12:12:12 N
bob不再返回2012-10-01@mahmoud-gamal@Jim那是因为你添加的记录
bob 2012-10-04 2012-07-0712:12:12 N
是否有
created_for
字段=
2012-10-04
not
2012-10-01
由于条件
其中t2.created_for='2012-10-01'
否,请再次查看。它不再返回2012-10-01的bob。对于我发布的表子集,它返回所需的2行。但是,如果我为Bob添加了一个日期更晚的添加行,则只返回1行。2012-10-01的bob行不再返回。这适用于上表的子集,但只要我添加另一行,如:
bob 2012-10-04 2012-07-07 12:12:12 N
bob不再返回2012-10-01@mahmoud-gamal@Jim这是因为您添加的记录具有
created_for
field=
2012-10-04
not
2012-10-01
由于条件
WHERE t2.created_for='2012-10-01'
否,请再次查看。它不再返回2012-10-01的bob。对于我发布的表子集,它返回所需的2行。但是,如果我为Bob添加了一个日期更晚的添加行,则只返回1行。2012-10-01的bob行不再返回。