我有一个数据库#1的用户名和密码列表,我想将它与DB#2中的用户名和密码列表进行比较。
如果DB#2的用户名和密码不在DB#1中,则应将其删除。
因此,当遍历列表并且存在匹配时(意味着,DB#2有一行不应该在DB#1中)。如何在DB#2中检索与条目对应的行ID?
在创建两个列表时,我排除了行ID,因为这会导致所有条目与DB#1不匹配。所以我只过滤了用户名和密码列。
我们可以尝试在这里使用EXISTS
子句和DELETE
:
DELETE
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1
WHERE t1.username = t2.username AND t1.password = t2.password);
如果要首先检查第二个表中哪些记录在第一个表中没有匹配的凭据,那么我们可以使用具有类似逻辑的select:
SELECT username, password
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1
WHERE t1.username = t2.username AND t1.password = t2.password);