8

テーブルから最初の行を除くすべての行を返すにはどうすればよいですか? ここに私のSQL文があります:

Select Top(@TopWhat) * 
from tbl_SongsPlayed 
where Station = @Station 
order by DateTimePlayed DESC

最初の行を除くすべての行を返すように SQL ステートメントを変更するにはどうすればよいですか。

どうもありがとう

4

4 に答える 4

31

SQL 2012には、かなり便利なOFFSET句もあります。

Select Top(@TopWhat) *
from tbl_SongsPlayed 
where Station = @Station 
order by DateTimePlayed DESC
OFFSET 1 ROWS
于 2013-02-22T20:45:20.477 に答える
6

データベース製品に応じて、以下を使用できますrow_number()

select *
from
(
  Select s.*,
    row_number() over(order by DateTimePlayed DESC) rn
  from tbl_SongsPlayed s
  where s.Station = @Station 
) src
where rn >1
于 2013-02-22T20:41:43.850 に答える
1

すでに 'Chrisb' は非常に適切な回答をしています。しかし、これを試すこともできます...

EXCEPT オペランド ( http://msdn.microsoft.com/en-us/library/ms188055.aspx )

Select Top(@TopWhat) *
from tbl_SongsPlayed 
Except  Select Top(1) *
from tbl_SongsPlayed 
where Station = @Station 
order by DateTimePlayed DESC

「Not In」は、使用できる別の句でした。

于 2013-02-22T21:28:14.590 に答える
0

の一意のIDがあるとするとtbl_SongsPlayed、次のようになります。

// Filter the songs first
With SongsForStation
As   (
   Select *
   From   tbl_SongsPlayed
   Where  Station = @Station
)
// Get the songs
Select *
From   SongsForStation
Where  SongPlayId <> (
   // Get the top song, most recently played, so you can exclude it.
   Select Top 1 SongPlayId
   From   SongsForStation
   Order By DateTimePlayed Desc
   )
// Sort the rest of the songs.
Order By
   DateTimePlayed desc
        Where 
于 2013-02-22T20:45:04.377 に答える