用另一个表中的随机条目更新表的列
Posted
技术标签:
【中文标题】用另一个表中的随机条目更新表的列【英文标题】:Update a column of table with random entry from another table 【发布时间】:2017-08-04 01:44:28 【问题描述】:update testdata.test
set abcd = (select abc
from DATA1
order by random()
limit 1
)
这样做只会使表 DATA1 中的一个随机条目填充到 TEST 表的所有行中。
我需要的是 -> 生成从 DATA 1 表到 TEST 表的随机条目的每一行
【问题讨论】:
那么给定的随机值abc
是否会在结果集中出现多次?
DATA1 总是有更多的行然后测试?..
@Tim Biegelesian 是的,它可以出现
@Vao Tsun DATA1 的行数少于测试数据..但这没关系,我只想从 DATA1 填充随机数据进行测试..所以即使 DATA1 中有 4 行,这些也必须出现在 TEST 表中随机填充多少测试列
Populate random data from another table的可能重复
【参考方案1】:
从子查询中引用外部表,使其成为相关子查询。然后它必须为每一行执行:
UPDATE testdata.test
SET abcd = (SELECT CASE WHEN test.abcd IS NOT DISTINCT FROM test.abcd
THEN abc
END
FROM data1
ORDER BY random()
LIMIT 1
);
【讨论】:
我在 postgresql 中的 distinct(当 ipreal 不不同时选择案例)出现错误。我尝试使用条件而不是不同的 WHEN test.abcd test.abcd THEN abc -> 查询执行但没有更新 对此感到抱歉.. 错误 - >无效操作:“DISTINCT”位置或附近的语法错误:70; SET ipreal = (当 ipreal 与 ipreal 没有区别时选择 CASE 那你肯定用的不是普通的 PostgreSQL,因为我运行了上面的语句并没有得到这样的错误。 你在开玩笑吧? 8.0.2?但即使是这个古老的版本(至少安装最新的版本!)也有IS DISTINCT FROM
运算符。以上是关于用另一个表中的随机条目更新表的列的主要内容,如果未能解决你的问题,请参考以下文章