我在这样的文件中有一个用户名列表:
userE userZ userA ...
我在mysql数据库中有两个表
Users
表:
| UID | NAME | |-----|-------| | 101 | userQ | | 102 | userZ | | 103 | userA | ...
Roles
表:
| UID | RID | |-----|-----| | 101 | 10 | | 101 | 20 | | 102 | 10 | | 102 | 30 | | 103 | 10 | | 103 | 30 | | 103 | 20 | ...
文件中的用户名列表需要与用户表匹配才能找出uid
,如果rid=30
存在该用户ID,则需要删除该行。
如果仍然不清楚,请告诉我。
答案 0 :(得分:1)
一种方法是首先使用delete_users
将用户名从文件加载到临时表(让我们称之为LOAD DATA INFILE
)。
CREATE TABLE delete_users (`name` varchar(32));
LOAD DATA INFILE '/tmp/delete_users.txt'
INTO TABLE delete_users
LINES TERMINATED BY '\n' -- or most likely '\r\n' if it's Windows
(@name)
SET name = TRIM(@name);
然后使用查询
DELETE r
FROM roles r JOIN users u
ON r.uid = u.uid JOIN delete_users d
ON u.name = d.name
AND r.rid = 30;
最后放下delete_users
表
DROP TABLE delete_users;
这是 SQLFiddle 演示