我有一个数据库,其中存储了包含VATNr的用户帐户。 现在,我需要使用以下语法检查是否存在重复项:
我无法控制VATNr在数据库中的保存方式,这意味着有时它们可能会以“BE' BE”为前缀。有时不会。
现在,我需要确保根据以下内容没有重复:
这意味着2 VATNr(BE123456789)和(123456789)会产生双倍,但2 VATNr(BE123456789)和(987654312)不会导致双倍。
如何使用SQL查询执行此操作?
我考虑使用类似下面示例的SubQuery,但这不起作用:
SELECT User_ID, UserfirstName, UserLastName, Username, VatNr
FROM [User] Original
WHERE VATnr LIKE '%BE' +
( SELECT VatNr FROM [User] WHERE VATnr != '' AND IS NOT NULL AND
VatNr NOT LIKE '%BE%' AND VatNr NOT LIKE '%NL%' AND VatNr NOT LIKE '%FR%' AND VatNr NOT LIKE '%DK%'
AND VatNr NOT LIKE '%DE%' AND VatNr NOT LIKE '%ATU%' AND VatNr NOT LIKE '%LU%' AND VatNr NOT LIKE '%CHE%'
AND VatNr NOT LIKE '%ESE%' ) + '%'
这确实给我以下错误:Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
答案 0 :(得分:0)
我认为WHERE中的第二个条件返回重复值或更多值,您可以选择查询并检查返回值吗?或者你在条件查询中加入了区别。
SELECT DISTINCT VatNr FROM [User] WHERE VATnr != '' AND IS NOT NULL AND
VatNr NOT LIKE '%BE%' AND VatNr NOT LIKE '%NL%' AND VatNr NOT LIKE '%FR%' AND VatNr NOT LIKE '%DK%'
AND VatNr NOT LIKE '%DE%' AND VatNr NOT LIKE '%ATU%' AND VatNr NOT LIKE '%LU%' AND VatNr NOT LIKE '%CHE%'
AND VatNr NOT LIKE '%ESE%'