如何使两个表条件更新一个表

时间:2016-08-25 19:09:19

标签: mysql mariadb

大家好,我不明白。

我有两张桌子

文章:

id|fromid|toid|receiver|sender 
1, null, null, user1, user2

用户:

id|username
1, user1
2, user2

如您所见 fromid toid 具有 null 值。所以我想用用户名填写它,但我不知道。

稍后应该输入如下:

1, 2, 1, user1, user2

我试着用fromid开始但是没有用。

SELECT @curUsername := user.username, @curUserid := user.id FROM user;
UPDATE post SET post.fromid = @curUserid WHERE post.sender = @curUsername;

1 个答案:

答案 0 :(得分:2)

如果要编写组合多个行的列的任何表达式,可以使用连接。

UPDATE Posts
JOIN User AS FromUser ON Posts.sender = FromUser.username
JOIN User AS ToUser ON Posts.receiver = ToUser.username
SET Posts.fromid = FromUser.id,
    Posts.toid = ToUser.id;

MySQL支持UPDATE语句中的连接(尽管这不是标准SQL的一部分)。