【发布时间】:2021-11-11 15:40:30
【问题描述】:
我找不到也无法使用 SQL Mysql 解决这个问题。 我想更新一个表的两列,而这些值的来源是另一个表,不得不随机来。 这是一个试探性的例子:
update table1 a1,
(select col1, col2
from table2
ORDER BY RAND() limit 1) a2
set a1.col1 = a2.col1, a1.col2 = a2.col2
where a1.col3 is not null;
从这个表格中,table2 中的相同值总是会出现。
table1 | table2
id col1 col2 | id col1 col2
1 aaa bbb | 1 xxx yyy
2 ccc ddd | 2 www ttt
| 3 uuu vvv
我希望表2中的值(col1,col2)在table1中随机定义(col1和col2)。
没有限制 1,它也使用相同的记录进行更新。好像table2中有1条记录。
也就是说,对于更新的每一行,在另一个表中进行一个子查询,随机带来一条记录。
【问题讨论】:
-
当然,table2 中的相同值即将到来。由于
LIMIT 1,子查询仅返回 1 行。 -
请提供样本数据和期望的结果。 “必须随机来”不清楚。
-
@GordonLinoff 我很清楚他们想要什么。 table1 中 col3 为空的每一行都应该从 table2 的随机行中复制 col1 和 col2。但他们希望每个副本有不同的随机行。
-
即他们想要两个表之间的某种随机连接。
-
@GordonLinoff 但我不知道该怎么做,我认为这需要你的 SQL 魔法。