表[_AUX]
从asp页面接收一个值(单词' TOJ'由表单提交)。
根据这些信息,我尝试创建一个触发器来更新另一个名为[dbo].[TODOS]
的表。
但我必须随机选择只有一个行,其中包含' false'价值,然后将其更改为' true'。
这是我的代码:
IF EXISTS (
select top 1 A.flag
from [DBO].[_AUX] AS A
WHERE a.flag = 'TOJ' order by a.ID_AUX desc
)
update DBO.TODOS set DBO.TODOS.[TOJ_FLAG]='true'
where DBO.TODOS.[TOJ_FLAG] =
(
select top 1 t.[toj_flag], t.TODOS
FROM dbo.todos as t
where t.toj_flag = 'false'
ORDER BY NEWID()
)
我从sql management studio收到错误:
Msg 116,Level 16,State 1,Line 14
当选择列表中只能指定一个表达式时 子查询不是用EXISTS引入的。
答案 0 :(得分:0)
在这样的声明中使用:
IF EXISTS ( select top 1 A.flag
from [DBO].[_AUX] AS A
WHERE a.flag = 'TOJ' order by a.ID_AUX desc
)
update DBO.TODOS set DBO.TODOS.[TOJ_FLAG]='true'
where DBO.TODOS.[TOJ_FLAG] in
( select t.[toj_flag]
FROM dbo.todos as t
where t.toj_flag = 'false'
ORDER BY NEWID()
)
更新:
update DBO.TODOS set DBO.TODOS.[TOJ_FLAG]='true'
where DBO.TODOS.[TOJ_FLAG] in
( select t.[toj_flag]
FROM dbo.todos as t
where t.toj_flag = 'false'
)