Vac*_*ano 3 sql t-sql sql-server sql-server-2008 sql-server-2008-r2
我在我的数据库中存储了一个消息列表(所以如果我崩溃我不会丢失它们).
但是当我将它们拉出来时,我需要将它们按顺序拉出来.
我正在寻找的是一个查询,它将给我前x行,直到列IsWeirdMessage= 1.
所以,假设我有一个看起来像这样的表:
CREATE TABLE MyMessages(MessageId bigint IDENTITY(1,1),
MyMessage varchar(100), IsWeirdMessage bit)
INSERT INTO MyMessages(MyMessage, IsWeirdMessage)
SELECT 'SomeValue1', 0 UNION ALL
SELECT 'SomeValue2', 0 UNION ALL
SELECT 'SomeValue3', 0 UNION ALL
SELECT 'SomeValue3', 0 UNION ALL
SELECT 'SomeValue4', 0 UNION ALL
SELECT 'SomeValue5', 0 UNION ALL
SELECT 'WeirdThingHere', 1 UNION ALL
SELECT 'SomeValue7', 0 UNION ALL
SELECT 'SomeValue8', 0 UNION ALL
SELECT 'SomeValue9', 0 UNION ALL
SELECT 'OtherWeirdStuff', 1 UNION ALL
SELECT 'SomeValue11', 0
GO
Run Code Online (Sandbox Code Playgroud)
我怎么能制作一个查询,通过SomeValue5(按顺序)给我SomeValue1,键入?IsWeirdMessage
这样的事情应该这样做:
select * from MyMessages
where messageid > @MessageID
and messageid <=
(select min(messageid) from MyMessages
where IsWeirdMessage = 1 and messageid > @MessageID)
order by messageid
Run Code Online (Sandbox Code Playgroud)
其中@MessageID是您检索的最后一个奇怪消息的值.你将从0开始获得第一批,然后7开始获得第二批,等等.
演示:http://www.sqlfiddle.com/#!3/10336/9