我正在尝试删除JobNumber像__10%(带有两个下划线)的行,但不是以CH10%或CG10%开头的值
这是删除良好数据的原始SQL。
DELETE FROM @TaskMaster
WHERE JobNumber LIKE '__10%'
这就是我所拥有的:
DELETE FROM @TaskMaster
where (select JobNumber from @TaskMaster where JobNumber NOT LIKE 'CH10%' or JobNumber NOT LIKE 'CG10%' ) like '__10%'
但是得到错误
消息512,级别16,状态1,第140行子查询返回的错误大于1 值。当子查询遵循=,!=,<,<=,>>,> =或将子查询用作表达式时,不允许这样做。
非常感谢您的帮助 皮特
答案 0 :(得分:3)
只需重新排列您的where子句:
DELETE FROM @TaskMaster
where JobNumber NOT LIKE 'CH10%'
and JobNumber NOT LIKE 'CG10%'
and JobNumber like '__10%'
答案 1 :(得分:1)
要使用的正确查询是:
DELETE FROM @TaskMaster
where JobNumber NOT LIKE 'CH10%'
and JobNumber NOT LIKE'CG10%'
and JobNumber LIKE'__10%'
您的查询由于语法错误而无法使用,任何子查询都应遵循以下格式:
SELECT column-names
FROM table-name1
WHERE value IN (SELECT column-name
FROM table-name2
WHERE condition)
在您的情况下,您错过了父查询中value
子句的where
部分。如果您要修改现有查询,则将如下所示:
DELETE FROM @TaskMaster
where JobNumber IN
(select JobNumber from @TaskMaster
where JobNumber NOT LIKE 'CH10%' OR
JobNumber NOT LIKE 'CG10%')
AND JobNumber LIKE '__10%'
但是,我还是更喜欢使用上面的查询,而不是这个。