SELECT [USER_ID]
FROM [DB].[dbo].[PhoneNumbers]
WHERE NOT EXISTS (SELECT [USER_ID] FROM [DB].[dbo].[Users])
我正在尝试类似的操作,但是我陷入了SQL Server语法的困扰。
我需要从PhoneNumbers表中选择所有具有User_ID不存在的User_ID的行,以便删除孤立的数据。
答案 0 :(得分:1)
请尝试以下查询
SELECT [USER_ID]
FROM [DB].[dbo].[PhoneNumbers]
WHERE [USER_ID] NOT IN (SELECT [USER_ID] FROM [DB].[dbo].[Users])
答案 1 :(得分:0)
如果需要在SQL Server中将关键字作为表名括起来,请使用[],在MySQL中请使用反引号。 尝试删除方括号并用反引号代替。
答案 2 :(得分:0)
您的查询只需要一个相关子句:
SELECT [USER_ID]
FROM [DB].[dbo].[PhoneNumbers] p
WHERE NOT EXISTS (SELECT 1 FROM [DB].[dbo].[Users] U WHERE u[USER_ID] = p.[USER_ID]);
我强烈建议您在子查询中使用NOT EXISTS
而不是NOT IN
。如果子查询返回 any NOT IN
值,则NULL
的行为不符合预期;在这种情况下,将不会返回任何行。