使用mysql.connection根据另外两列中的值返回行ID

问题描述 投票:0回答:1

我有一个数据库#1的用户名和密码列表,我想将它与DB#2中的用户名和密码列表进行比较。

如果DB#2的用户名和密码不在DB#1中,则应将其删除。

因此,当遍历列表并且存在匹配时(意味着,DB#2有一行不应该在DB#1中)。如何在DB#2中检索与条目对应的行ID?

在创建两个列表时,我排除了行ID,因为这会导致所有条目与DB#1不匹配。所以我只过滤了用户名和密码列。

mysql python-3.x
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.