4

400行のテーブルがあります。最後の行を除く最後の 6 行を選択したい。

次のコードでは、最後の 6 行を取得していますが、最後 (400 番目) の行は表示したくありません

SELECT * 
FROM ImagesInfo 
WHERE Image_Id IN 
     (    SELECT TOP 6 Image_Id 
          FROM ImagesInfo 
          ORDER BY Image_Id DESC )
4

7 に答える 7

2
SELECT top 6 *
FROM 
     (    SELECT TOP 7 *
          FROM ImagesInfo 
          ORDER BY Image_Id DESC 
     ) t
ORDER BY Image_Id
于 2012-08-17T10:15:32.237 に答える
2

ROW_NUMBER()構文を使用する

SELECT * 
from
(
   SELECT *, ROW_NUMBER() over (ORDER By Image_ID) rn
   FROM yourtable 
) v
WHERE rn between x and y
于 2012-08-17T10:11:29.900 に答える
1

オフセットを見てください

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

【Microsoft SQL Server ウェブサイト】

http://technet.microsoft.com/en-us/library/gg699618.aspx

于 2014-04-04T21:22:04.367 に答える
0

どうですか:

SELECT * FROM ImagesInfo
WHERE Image_Id IN (SELECT TOP 6 Image_Id FROM ImagesInfo ORDER BY Image_Id DESC) AND
      Image_Id <> (SELECT TOP 1 Image_Id FROM ImagesInfo ORDER BY Image_Id DESC)

また

SELECT * FROM ImagesInfo
WHERE Image_Id IN (SELECT TOP 6 Image_Id FROM ImagesInfo ORDER BY Image_Id DESC) AND
      Image_Id <> (SELECT MAX(Image_Id) FROM ImagesInfo)
于 2012-08-17T10:10:14.717 に答える
0

私が正しく理解している場合(確信が持てません)、次のことができるはずです:

SELECT * 
FROM ImagesInfo 
WHERE Image_Id IN 
     (    SELECT TOP 7 Image_Id 
          FROM ImagesInfo 
          ORDER BY Image_Id DESC )
     and Image_Id not IN
     (    SELECT TOP 1 Image_ID
          FROM ImagesInfo
          ORDER BY Image_Id DESC )
于 2012-08-17T10:10:26.227 に答える
0

これを試して:

結果セットから最大レコードを削除するだけです

 SELECT * 
FROM ImagesInfo 
WHERE Image_Id IN 
     (    SELECT TOP 6 Image_Id 
          FROM ImagesInfo 
          where Image_Id<> (select MAX(Image_Id) from ImagesInfo )
          ORDER BY Image_Id DESC )

また

SQL Server 2005 以降を使用している場合: CTEでROW_NUMBER()を使用できます

with cte as(          
 SELECT *,
        ROW_NUMBER() over (order by Image_Id desc) as row_num 
 FROM ImagesInfo)           
 select * from cte where row_num between 2 and 7
于 2012-08-17T10:11:38.673 に答える
0
select top 6 * from image_info 
where image_id not in(select max(image_id) from image_info)
order by image_id desc
于 2012-08-17T10:20:47.623 に答える