Sql 子查询返回多行并停止工作

Sql 子查询返回多行并停止工作,sql,sql-server,subquery,Sql,Sql Server,Subquery,我有一张有一列的桌子。我必须从列中获取值并在视图中修改它,然后再将其与外部提供的值进行比较 为此,我使用以下查询: SELECT COUNT(*) FROM tblMaster WITH (NOLOCK) WHERE (SELECT test FROM (SELECT RIGHT('00000000000000000' + RTRIM(CODE), 17) as test FROM tblMaster ) t) = '0

我有一张有一列的桌子。我必须从列中获取值并在视图中修改它,然后再将其与外部提供的值进行比较

为此,我使用以下查询:

 SELECT COUNT(*)
 FROM tblMaster WITH (NOLOCK)
 WHERE (SELECT test 
        FROM
            (SELECT RIGHT('00000000000000000' + RTRIM(CODE), 17) as test 
             FROM tblMaster ) t) = '00001231231231231'
子查询以列的形式返回从实际表中提取的列的修改值。因此,我使用从子查询返回的列。我不知道我是否可以使用一个在等式左侧返回一列的子查询


子查询返回多个值。

此操作不需要子查询:

SELECT COUNT(*)
FROM tblMaster WITH (NOLOCK)
WHERE right('00000000000000000' + RTRIM(CODE), 17) = '00001231231231231';

你可以简化这个。您不需要向整数添加0,SQL将在比较时删除它们。此外,您不需要子查询:

SELECT COUNT(*)
FROM tblMaster WITH (NOLOCK)
WHERE CODE = '1231231231231'

我不明白你想做什么。您的WHERE条件与WHERE right完全相同('00000000000000000'+RTRIM(代码),17)='00001231'。这应该与
相同,其中code='1231'
正如dnoeth所说,没有必要在值前面加0。当SQL引擎比较整数时,它们会被隐式删除。我注意到NOLOCK提示。在养成用此提示乱丢数据库的习惯之前,您可能想先看看这一点。