不在语句 Oracle 中更新查询
Update query with not in statement Oracle
我是 运行 一个带有 NOT IN
的更新语句,其中包含另一个查询 return 我一些签证号码。
似乎还有一个我无法追踪的错误,我怀疑我是否可以在 NOT IN
中使用查询。.如果有人能指出我在这里做错了什么。
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
UPDATE HUDHAIFA.VISA_APP
SET VISA_NO=(LPAD(TRIM(VISA_NO),8,'0'))
WHERE LENGTH(VISA_NO) < 8
AND VISA_NO IS NOT NULL
AND VISA_NO NOT IN (
SELECT
CASE
WHEN LTRIM(VISA_NO, '0') IS NULL THEN VISA_NO
WHEN LTRIM(VISA_NO, '0') IS NOT NULL THEN LTRIM(VISA_NO, '0')
END as VISA_NO
FROM HUDHAIFA.VISA_APP
WHERE LENGTH(VISA_NO) < 8
GROUP BY CASE
WHEN LTRIM(VISA_NO, '0') IS NULL THEN VISA_NO
WHEN LTRIM(VISA_NO, '0') IS NOT NULL THEN LTRIM(VISA_NO, '0')
END
HAVING COUNT(*) > 1
ORDER BY VISA_NO asc
);
请尝试删除 ORDER BY VISA_NO asc
和 运行。它在语法上不正确,在您的情况下不需要。
一般来说,ORA-907 通常不会与右括号一致,而是类似于 'there is syntax error near this place so I cannot imagine what you want and guess you should close left parenthesis opened somewhere before' 的意思。在您的情况下,正如 Bikash Ranjan Bhoi 所说,原因是 ORDER BY
子句对此类子查询毫无意义。
您还应该检查该子查询永远不会在其结果中产生 NULL
。 IN
和 NOT IN
语句都需要非空值集。
我是 运行 一个带有 NOT IN
的更新语句,其中包含另一个查询 return 我一些签证号码。
似乎还有一个我无法追踪的错误,我怀疑我是否可以在 NOT IN
中使用查询。.如果有人能指出我在这里做错了什么。
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
UPDATE HUDHAIFA.VISA_APP
SET VISA_NO=(LPAD(TRIM(VISA_NO),8,'0'))
WHERE LENGTH(VISA_NO) < 8
AND VISA_NO IS NOT NULL
AND VISA_NO NOT IN (
SELECT
CASE
WHEN LTRIM(VISA_NO, '0') IS NULL THEN VISA_NO
WHEN LTRIM(VISA_NO, '0') IS NOT NULL THEN LTRIM(VISA_NO, '0')
END as VISA_NO
FROM HUDHAIFA.VISA_APP
WHERE LENGTH(VISA_NO) < 8
GROUP BY CASE
WHEN LTRIM(VISA_NO, '0') IS NULL THEN VISA_NO
WHEN LTRIM(VISA_NO, '0') IS NOT NULL THEN LTRIM(VISA_NO, '0')
END
HAVING COUNT(*) > 1
ORDER BY VISA_NO asc
);
请尝试删除 ORDER BY VISA_NO asc
和 运行。它在语法上不正确,在您的情况下不需要。
一般来说,ORA-907 通常不会与右括号一致,而是类似于 'there is syntax error near this place so I cannot imagine what you want and guess you should close left parenthesis opened somewhere before' 的意思。在您的情况下,正如 Bikash Ranjan Bhoi 所说,原因是 ORDER BY
子句对此类子查询毫无意义。
您还应该检查该子查询永远不会在其结果中产生 NULL
。 IN
和 NOT IN
语句都需要非空值集。