【问题标题】:Get the last 9 occurances获取最后 9 次出现
【发布时间】:2018-06-18 08:59:54
【问题描述】:

我使用的是 MySQL 5.0.12,我有下表:

| post_id | price | created_at          |
|---------|-------|---------------------|
| 10      | 3.5   | 2018-06-18 07:36:34 |
| 11      | 4.8   | 2018-06-17 07:36:34 |
| 10      | 5     | 2018-06-16 07:36:34 |
| 10      | 5     | 2018-06-15 07:36:34 |
| 6       | 3.6   | 2018-06-12 07:36:34 |
| 10      | 2     | 2018-06-14 07:36:34 |
| 10      | 6     | 2018-06-13 07:36:34 |
| 10      | 9     | 2018-06-12 07:36:34 |
| 10      | 4     | 2018-06-11 07:36:34 |
| 10      | 3.6   | 2018-06-09 07:36:34 |

如您所见,post_id 10 出现了 8 次。

因此,我想获取从今天开始的最后 6 次出现。

| post_id | price | created_at          |
|---------|-------|---------------------|
| 10      | 3.5   | 2018-06-18 07:36:34 |
| 10      | 5     | 2018-06-16 07:36:34 |
| 10      | 5     | 2018-06-15 07:36:34 |
| 10      | 2     | 2018-06-14 07:36:34 |
| 10      | 6     | 2018-06-13 07:36:34 |
| 10      | 9     | 2018-06-12 07:36:34 |

我知道如何选择正确的 post_id,但我正在努力选择从今天开始的最后 6 次出现:

SELECT * FROM product where post_id = 10 

任何建议如何从今天的日期获得最后 6 次出现?

【问题讨论】:

  • 添加到您的 SELECT 查询 ORDER by created_at DESC LIMIT 6

标签: mysql sql


【解决方案1】:

你会这样做:

SELECT * FROM product 
WHERE post_id = 10 
ORDER BY created_at DESC 
LIMIT 6

您按日期降序排序,这样您就可以在顶部获得最新的。并且您限制为 6 个,因此您只能获得所需的 6 个。

【讨论】:

    【解决方案2】:

    使用 LIMIT 关键字获取查询的前 n 行。例如:

    SELECT * FROM product WHERE post_id = 10 LIMIT 6
    

    请记住,此示例将返回前 6 行。您可以使用 ORDER BY 关键字来控制前 6 行应该是什么。

    在你的情况下,你需要:

    SELECT * FROM product WHERE post_id = 10 ORDER BY created_at DESC LIMIT 6
    

    【讨论】:

      【解决方案3】:

      使用DATE_ADD(CURDATE(), INTERVAL -6 DAY)。

      SELECT * 
      FROM product 
      WHERE post_id = 10 
      AND created_at >= DATE_ADD(CURDATE(), INTERVAL -6 DAY)
      

      输出:

      post_id price   created_at
      10      3.5     2018-06-18 07:36:34
      10      5       2018-06-16 07:36:34
      10      5       2018-06-15 07:36:34
      10      2       2018-06-14 07:36:34
      10      6       2018-06-13 07:36:34
      10      9       2018-06-12 07:36:34
      

      SQL 小提琴:http://sqlfiddle.com/#!9/3c36fc/1/0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 2013-12-28
        • 2018-12-28
        相关资源
        最近更新 更多