我有一个包含数据条目的表,如下所示。我想在插入新数据时始终选择最后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
答案 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