使用LIMIT a,b或limit offset从最后一次获取表中的条目

时间:2017-07-23 19:31:17

标签: mysql sql-order-by offset sql-limit

我想在包含超过1,000,000个条目的表中获取最新条目。我正在将此查询用于实例

var ar = [
   {
      "name":"BHPhotovideo",
      "prices":[
         {
            "price":"799.00",
            "createdAt":"2017-07-23T16:17:11.000Z",
            "updatedAt":"2017-07-23T17:21:41.000Z"
         },
         {
            "price":"770.00",
            "createdAt":"2017-07-21T16:17:11.000Z",
            "updatedAt":"2017-07-23T16:17:11.000Z"
         },
         {
            "price":"599.00",
            "createdAt":"2017-07-19T16:17:11.000Z",
            "updatedAt":"2017-07-22T16:17:11.000Z"
         },
         {
            "price":"920.00",
            "createdAt":"2017-07-22T16:17:11.000Z",
            "updatedAt":"2017-07-22T16:17:11.000Z"
         }
      ]
   },
   {
      "name":"Adorama",
      "prices":[
         {
            "price":"799.00",
            "createdAt":"2017-07-22T16:17:11.000Z",
            "updatedAt":"2017-07-23T17:21:41.000Z"
         },
         {
            "price":"799.00",
            "createdAt":"2017-07-20T16:17:11.000Z",
            "updatedAt":"2017-07-23T16:17:11.000Z"
         },
         {
            "price":"810.00",
            "createdAt":"2017-07-18T16:17:11.000Z",
            "updatedAt":"2017-07-22T16:17:11.000Z"
         },
         {
            "price":"799.00",
            "createdAt":"2017-07-17T16:17:11.000Z",
            "updatedAt":"2017-07-22T16:17:11.000Z"
         }
      ]
   }
];


var out  = ar.map( function(a) {
    return  {
        "label" : a.name,
        "prices" : a.prices.map( function(aa) { return {x: aa.createdAt, y: aa.price} })
    }
});
console.log( out );

它给了我从510045开始到510245结束的条目.MYSQL可以从510245到510045获取条目。我的意思是从最后一个获取数据,我不想只获取200个条目

4 个答案:

答案 0 :(得分:1)

您应该通过desc ORDER BY,如果需要,还可以使用LIMIT来定义您想要的条目数。

示例:

SELECT id FROM tablea WHERE flag = "N" ORDER BY id DESC; 
-- this will help to find the last entries

但是如果你想拥有上次查询中没有得到的最​​新条目,你应该始终保留最后一个ID的值,并将其用作下次检查的参考。

示例(假设上次执行查询的最后一个ID是55304):

SELECT id FROM tablea WHERE flag = "N" WHERE id > 55304 ORDER BY id DESC; 

答案 1 :(得分:0)

如果你想要的是id大于510245的行,只需使用where条件

[System.Text.Encoding]

这应该这样做

答案 2 :(得分:0)

据我了解你的要求。你可以尝试一下。

Select * FROM table WHERE flag = 'N' AND id > 510245 ORDER BY id

答案 3 :(得分:0)

这里还有一件事是

我正在处理的版本不支持包含LIMIT的子查询。所以,@ strawberry感谢您给我提示解决问题。但我使用这个子查询作为内连接表(如下所述)

SELECT id FROM tablea AS T1

INNER JOIN (SELECT id FROM tablea WHERE flag = "N" ORDER BY id LIMIT 510045,200) AS T2

WHERE T2._id = T1._id ORDER BY T2._id DESC;

这给了我所需的结果。谢谢大家的帮助!!