DBO返回只能在选择列表中指定一个表达式

时间:2015-03-14 07:21:38

标签: sql sql-server

[_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引入的。

1 个答案:

答案 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'
                           )