php - Mysql 获取具有特定顺序的日期之间的唯一记录

标签 php mysql

我有下表

    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/

相关文章:

php - 如何跟踪 MySQL 表中刚刚删除的行?

PHP Jquery : chat system, 这个的理想框架是什么?

php - 如何将url参数传递给Vuejs

php - 单击添加按钮后如何将唯一行临时存储到html表中?

python - 在 Python 中使用 MySQLdb 的长期陈旧结果

mysql - 选择具有不同域的行

mysql - 哪个查询是最佳 id<>3 或 id in {1,2,4}

mysql - 按累积分组计算不同项目的计数

php - 类不存在 - Laravel

php - MySQL查询在PHP中返回null,但在终端中很好