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提示。在养成用此提示乱丢数据库的习惯之前,您可能想先看看这一点。