使用MySQL中的rand()将值从表更新到另一个表

时间:2015-06-20 16:48:42

标签: mysql sql

我有2个表格,我需要UPDATE table1的值uid = 0

这是我的表格:

table1:游戏

id      | uid     | 
--------+---------+
1       | 5       | 
2       | 7       | 
3       | 0       | 

table2:用户

idu     | name    | 
--------+---------+
1       | todd    | 
2       | mario   | 
3       | luigi   | 

所以基本上我需要UPDATE uid第3行的table1值,其随机数介于1-3 idu table2之间})。

为此,我尝试了这个:

UPDATE games (uid)
SET idu = ORDER BY rand() LIMIT 1 FROM users
WHERE uid = 0;

为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

为什么你不能这样做

setNeedsLayout

根据您的评论,在这种情况下使用复合条件。因此,在您的情况下,请使用UPDATE games SET uid = ( select idu from users ORDER BY rand() LIMIT 1) WHERE uid = 0; 列,条件如

ID

考虑到您的WHERE uid = 0 AND ID = 3; 列是主键/唯一键列这一事实,这将确保只有ID = 3行才会更新。

答案 1 :(得分:1)

我想这可能对你有帮助

SELECT @idu := idu FROM users ORDER BY RAND() LIMIT 1;
UPDATE games SET uid = @idu WHERE uid = 0;

但是,这将使用相同的随机获取的users.idu

更新games.uid = 0的所有行。