-1

我在这样的文件中有一个用户名列表:

用户E
用户Z
用户A
...

我在mysql数据库中有两个表

Users桌子:

| 识别码 | 姓名 |
|-----|-------|
| 101 | 用户问 |
| 102 | 用户Z |
| 103 | 用户A |
...

Roles桌子:

| 识别码 | 摆脱 |
|-----|-----|
| 101 | 10 |
| 101 | 20 |
| 102 | 10 |
| 102 | 30 |
| 103 | 10 |
| 103 | 30 |
| 103 | 20 |
...

文件中的用户名列表需要与用户表匹配,以找出uid该用户 ID(如果存在),rid=30则需要删除该行。

如果这还不清楚,请告诉我。

4

1 回答 1

1

一种方法是首先将您的用户名从文件加载到临时表(让我们称之为delete_usersLOAD 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演示

于 2013-09-10T04:16:21.657 回答