从mysql中选择多行,但显示每个id的一个结果

时间:2016-02-09 22:33:47

标签: php mysql

我有像这样的mysql表

id   id_p   name    date
1     1     test1    2015-01-01
2     1     test1    2015-02-02
3     2     test2    2015-03-01
4     2     test2    2014-03-05

按日期选择

select name, date from table1 where date <= (now() - interval 6 month)

,结果是

name   date
test1  2015-01-01
test1  2015-02-02
test2  2015-02-02
test2  2014-03-05

如何获得此结果如何限制

name   date
test1  2015-01-01
test2  2015-02-02

谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

你应该使用GROUP BY,这意味着你的字段需要正确设置,否则mysql不知道返回哪个值。在这种情况下,我将date字段包裹在MIN函数中,因为它似乎是您想要的最低/最早日期。

因此,在您的情况下,请修改查询,如下所示:

SELECT `name`, MIN(`date`) as `date`
    FROM table1 
    WHERE `date` <= (now() - interval 6 month)
    GROUP BY `name`