我有下表
id | item_id | start_date | end_date | disc_percent
1 | 1 | 2016-12-27 | 2016-12-31 | 50
2 | 2 | 2016-12-27 | 2016-12-31 | 50
3 | 3 | 2016-12-27 | 2016-12-31 | 50
4 | 137 | 2016-12-27 | 2016-12-31 | 50
5 | 1 | 2016-12-28 | 2016-12-29 | 10
我正在运行此查询:
SELECT *
from onsale
WHERE (CURDATE() BETWEEN onsale.start_date
AND onsale.end_date)
order by onsale.start_date DESC,
onsale.end_date ASC
我只想获取每个 item_id 的第一条记录,如下所示:
id | item_id | start_date | end_date | disc_percent
5 | 1 | 2016-12-28 | 2016-12-29 | 10
2 | 2 | 2016-12-27 | 2016-12-31 | 50
3 | 3 | 2016-12-27 | 2016-12-31 | 50
4 | 137 | 2016-12-27 | 2016-12-31 | 50
我怎样才能得到这个结果? 感谢您的帮助
最佳答案
要获取item_id的唯一记录,您应该使用group by子句。 group by 子句返回表的唯一行。
查询将是这样的 -
SELECT *
from onsale
WHERE (CURDATE() BETWEEN onsale.start_date
AND onsale.end_date) group by item_id
order by onsale.start_date DESC,
onsale.end_date ASC
关于php - Mysql 获取具有特定顺序的日期之间的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374501/