テーブルから最初の行を除くすべての行を返すにはどうすればよいですか? ここに私のSQL文があります:
Select Top(@TopWhat) *
from tbl_SongsPlayed
where Station = @Station
order by DateTimePlayed DESC
最初の行を除くすべての行を返すように SQL ステートメントを変更するにはどうすればよいですか。
どうもありがとう
テーブルから最初の行を除くすべての行を返すにはどうすればよいですか? ここに私のSQL文があります:
Select Top(@TopWhat) *
from tbl_SongsPlayed
where Station = @Station
order by DateTimePlayed DESC
最初の行を除くすべての行を返すように SQL ステートメントを変更するにはどうすればよいですか。
どうもありがとう
SQL 2012には、かなり便利なOFFSET句もあります。
Select Top(@TopWhat) *
from tbl_SongsPlayed
where Station = @Station
order by DateTimePlayed DESC
OFFSET 1 ROWS
データベース製品に応じて、以下を使用できます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
すでに '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」は、使用できる別の句でした。
の一意の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