我有一个数据库#1的用户名和密码的列表,我想将其与DB#2中的用户名和密码的列表进行比较。
如果DB#2的用户名和密码不在DB#1中,则应将其删除。
因此,在遍历列表时有一个匹配项(意味着,DB#2中有一行不应在DB#1中存在)。如何在DB#2中检索与条目对应的行ID?
在创建两个列表时,我排除了行ID,因为这将导致所有条目与DB#1不匹配。因此,我仅按用户名和密码列进行过滤。
答案 0 :(得分:0)
我们可以在此处与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);