【问题标题】:The user of Exists in SQLExists in SQL 的用户
【发布时间】:2015-04-26 12:37:15
【问题描述】:

我已经搜索了一段时间,它们是我的问题的多个条目,它们无法帮助我查明我的语法问题。

错误是

选择列表中只能指定一个表达式,当 EXISTS 没有引入子查询。

这是我的代码

DECLARE @NewUserID INT;
DECLARE @OldUserID INT;
DECLARE @CID INT;
DECLARE @NewMar VARCHAR;
DECLARE @LocalUserID INT;
DECLARE @CallDate DATETIME;

SET @OldUserID = 1891
SET @NewUserID = 1868;
SET @CID = (SELECT TOP 1 *
            FROM   contact
            WHERE  EXISTS (SELECT TOP 1 mar
                           FROM   marselect
                           WHERE  userid = @OldUserID
                                  AND mar NOT LIKE '%branch%')
            ORDER  BY NEWID());

SET @LocalUserID = 1868;
SET @CallDate = '1900-01-01 00:00:00.000';


--move account to new owner--
UPDATE contact
SET    mar = (SELECT TOP 1 *
              FROM   marselect
              WHERE  userid = @NewUserID)
WHERE  contactid = @cid;

--add history to the account--
INSERT INTO ContactHistory
            (contactid,
             historydate,
             contactResultID,
             UserID,
             ActivityType,
             Note,
             StartTime,
             Endtime,
             CampaignID,
             QtyPhones)
VALUES     (@CID,
            GETDATE(),
            96,
            @LocalUserID,
            'Move',
            'Account Reassigned to ' + @NewMar + '',
            GETDATE(),
            GETDATE(),
            0,
            NULL);

--add callback to the account--
INSERT INTO callback
            (contactid,
             userid,
             contacthistoryid,
             contactLabelRequestID,
             callbackDate,
             LastcontacthistoryID,
             lastattempt,
             closed,
             closeddate,
             closeduserid,
             callbacktype,
             insertdate,
             callnote,
             hastime)
VALUES      (@CID,
             @NewUserID,
             0,
             NULL,
             @CallDate,
             0,
             NULL,
             0,
             NULL,
             NULL,
             'Call',
             GETDATE(),
             'Call created automatically after account reassigned',
             0) 

我不明白为什么我的查询不起作用。它作为一个独立的查询工作,但是当我在这个意义上使用它时它不起作用。我在代码中还有其他相同类型的错误,但我认为如果我能理解并解决一个错误,我相信我可以解决其他错误。

错误在这一行-

set @CID = (select top 1 * from contact where exists (select top 1 mar from marselect where userid = @OldUserID and mar not like '%branch%') order by newid());

【问题讨论】:

标签: sql sql-server


【解决方案1】:

删除* 并保留您要分配给@CIDcolumn name

top 1 保留在exists 中也没有用

set @CID = 
(
select top 1 CID --here remove * and keep column name
from contact 
where exists (select mar -- Removed Top 1 here
              from marselect 
              where userid = @OldUserID and mar not like '%branch%') 
order by newid()
);

【讨论】:

    猜你喜欢
    • 2013-05-08
    • 2015-10-01
    • 2010-09-06
    • 2011-01-05
    • 2014-11-19
    • 2019-06-28
    • 2017-03-31
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多