条件SQL查询
我有一个需要设置条件的SQL查询,下面是我的SQL查询当前的状态:条件SQL查询,sql,sql-server,database,Sql,Sql Server,Database,我有一个需要设置条件的SQL查询,下面是我的SQL查询当前的状态: -- IF the video count is 1 UPDATE tbl_Video SET [Featured] = 1 WHERE [VideoId] = 1 GO -- ELSE IF Video Count is greater than 1 UPDATE tbl_Video SET [Featured] = 0 WHERE [Featured] = 1
-- IF the video count is 1
UPDATE tbl_Video SET
[Featured] = 1
WHERE [VideoId] = 1
GO
-- ELSE IF Video Count is greater than 1
UPDATE tbl_Video SET
[Featured] = 0
WHERE [Featured] = 1
GO
-- Set the top 5 viewed videos as featured as default
UPDATE tbl_Video SET
[Featured] = 1
WHERE VideoId In (SELECT TOP 5 VideoId FROM tbl_Video
ORDER BY Views DESC)
GO
-- END
希望上面查询中的注释能够解释我试图实现的目标,场景是:
如果视频计数为1,则在视频Id=1的情况下使特色列为真。如果视频计数大于1,则将所有特色列标记为false,然后将观看的前5个视频设置为特色 数据库是SQL Server
谢谢,如果这是在sql server过程中,您可以执行以下操作:
DECLARE @VideoCount INT
SELECT @VideoCount = COUNT(*) FROM tbl_Video
IF @VideoCount = 1
BEGIN
UPDATE tbl_Video SET
[Featured] = 1
WHERE [VideoId] = 1
GO
END
ELSE IF @VideoCount > 1
BEGIN
UPDATE tbl_Video SET
[Featured] = 0
WHERE [Featured] = 1
GO
END
declare @videoCount integer
--this is just a guess at what video count is
select @videoCount = count(*) from tbl_video
if (@videoCount = 1)
UPDATE tbl_Video SET
[Featured] = 1
WHERE [VideoId] = 1
ELSE IF (@videoCount > 1)
BEGIN
UPDATE tbl_Video SET
[Featured] = 0
WHERE [Featured] = 1
UPDATE tbl_Video SET
[Featured] = 1
WHERE VideoId In (SELECT TOP 5 VideoId FROM tbl_Video ORDER BY Views DESC)
END
如果您已经有
@videoCount
变量,该变量为非空
--Using case
update tbl_Video SET
[Featured] = case when @videoCount = 1 then 0
when @videoCount > 0 end --else [Featured] end
where [VideoId] = 1
--Using cte
;with cte as
(
select top (5) *
from tbl_Video
order by Views desc
)
update cte set [Featured] = 1
您可以在一个查询中完成此操作:
update tv
set Featured = case when rn <= 5 then 1 else 0 end
from (
select row_number() over (order by ViewCount desc) as rn
, *
from tbl_Video
) tv
更新电视
set Featured=case当rn时您使用的是什么数据库服务器?我使用的是MS SQL对不起,我现在编辑了我的问题来说明这一点。谢谢。只是猜测一下,但是-您是否确实希望按视图描述从tbl#U视频顺序中选择前5名视频ID
,而不是像按y从tbl#U视频y组中选择前5名视频ID。视频ID按和排序(y.[视图])描述
?