SQL Server 2008无法使用LIMIT关键字

时间:2014-11-25 05:21:44

标签: sql-server-2008

此查询是MySql

select
   a.id,
   a.name,
   a.vehicle,
   a.amt,
   a.date
   (select id 
    from tbl1
    where date < a.date and vehicle = a.vehicle
    LIMIT 0,1) as prv
FROM
   root_tbl a
WHERE
   amt <> 0

我在SQL Server中需要这个查询。你可以帮助我。

1 个答案:

答案 0 :(得分:0)

SQL Server不支持

LIMIT

如果您想获得表格的前x行,则必须使用TOP,如SELECT TOP (10) * FROM tbl1中所示。

要执行偏移​​等效,有一些技术,例如将子查询添加到结果集中的ROW_NUMBER(),以及在父查询中过滤所需的偏移量。

SELECT *
FROM (
    SELECT 
        id,
        ROW_NUMBER() OVER (ORDER BY id) AS RowNum   
    FROM tbl1
    ) T
WHERE RowNum BETWEEN 51 AND 75 -- Similar to LIMIT 50,25

对于您的特定查询,您似乎只需要TOP效率最高,因此以下内容适用于您的查询。

select
    a.id,
    a.name,
    a.vehicle,
    a.amt,
    a.date
    (select top (1) id from tbl1 where date < a.date and vehicle=a.vehicle)as prv
FROM tbl1 a