如何通过SQL查询从表中提取最后5个条目?

时间:2017-09-01 06:39:10

标签: mysql sql

我有一个包含数据条目的表,如下所示。我想在插入新数据时始终选择最后5行。因此,将在此处选择product_id 2-6。但是当我输入一个新产品时,会选择id 3-7,之后.. SQL查询会是什么?我是新手。任何帮助将不胜感激。提前谢谢。

product_id   product_name   product_price
------------------------------------------
1            Phone         120
2            Chips         2
3            Television    300
4            PC            400
5            Radio         50
6            Watch         10

4 个答案:

答案 0 :(得分:3)

SELECT * 
FROM Tab
ORDER BY product_id DESC
LIMIT 5

答案 1 :(得分:2)

您可以使用以下查询,假设" product_id"随着新行的添加,它是增量的。

从table_name顺序中选择* by product_id DESC limit 5。

<强>解释: 查询将根据product_id按降序对行进行排序,限制5将输出限制为第一行的5。因此,即使添加了新行,查询也会为您提供最后五行。

希望它有所帮助。 感谢

答案 2 :(得分:1)

您可以使用LIMIT关键字,该关键字将查询结果限制为多个行。将它与ORDER BY结合使用意味着它按正确的顺序排序。

SELECT product_id, product_name, product_price
FROM yourtable
ORDER BY product_id DESC
LIMIT 5;

答案 3 :(得分:1)

如果您的ID始终是连续的(没有记录被删除),并且您坚持按升序排序记录,则可以尝试:

  DECLARE @foo XML

SELECT @foo = N'
<harrys>
    <harry>
        <fish>0.015000000000</fish>
        <bicycle>2008-10-31T00:00:00+01:00</bicycle>
        <foo>ü</foo>
    </harry>
    <harry>
        <fish>0.025000000000</fish>
        <bicycle>2008-08-31T00:00:00+01:00</bicycle>
        <foo>ä</foo>
    </harry>
</harrys>
'

SELECT
    CAST(CAST(y.item.query('data(fish)') AS varchar(30)) AS float),
    CAST(LEFT(CAST(y.item.query('data(bicycle)') AS char(25)), 10) AS smalldatetime),
    CAST(y.item.query('data(foo)') AS varchar(25))
FROM
    @foo.nodes('/*') x(item)
    CROSS APPLY
    x.item.nodes('./*') AS y(item)

SELECT
    CAST(CAST(x.item.query('data(fish)') AS varchar(30)) AS float),
    CAST(LEFT(CAST(x.item.query('data(bicycle)') AS char(25)), 10) AS smalldatetime),
    CAST(x.item.query('data(foo)') AS varchar(25))
FROM
    @foo.nodes('harrys/harry') x(item)

SELECT
    CAST(CAST(y.item.query('data(fish)') AS varchar(30)) AS float),
    CAST(LEFT(CAST(y.item.query('data(bicycle)') AS char(25)), 10) AS smalldatetime),
    CAST(y.item.query('data(foo)') AS varchar(25))
FROM
    @foo.nodes('/harrys') x(item)
    CROSS APPLY
    x.item.nodes('./harry') AS y(item)

这适用于MySQL