sql 一个表里已经 有20行数据 ,然后要从另一个表里随机抽取20条 覆盖掉之前的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 一个表里已经 有20行数据 ,然后要从另一个表里随机抽取20条 覆盖掉之前的数据相关的知识,希望对你有一定的参考价值。
一个表里已经 有20行数据 ,然后要从另一个表里随机抽取20条 覆盖掉之前的数据
这个要怎么写 ???
首先嘛
DELETE FROM 那个只有20行数据的表
然后随机插入
由于 TOP - N 的处理, 与 随机抽取 , 各个数据库处理的 方式各不相同, 下面是不同数据库的处理办法:
Oracle:
INSERT INTO 空白表
SELECT *
FROM
(
SELECT * FROM 有数据的表 ORDER BY dbms_random.value
) subQuery
where rownum <= 20;
DB2:
INSERT INTO 空白表
SELECT *
FROM 有数据的表
ORDER BY rand()
fetch first 20 rows only;
SQL Server:
INSERT INTO 空白表
SELECT TOP 20 *
FROM 有数据的表
ORDER BY
newid();
mysql :
INSERT INTO 空白表
select *
FROM 有数据的表
ORDER BY rand() LIMIT 0, 20;
SQLite :
INSERT INTO 空白表
select *
FROM 有数据的表
ORDER BY RANDOM() LIMIT 0, 20; 参考技术A 可以先删除原来里的数据再将新数据插入,没有覆盖这种说法的
如
1.delete from table1 或 truncate table table1(此语句清除表中所有数据,但不记录详细日志,所以速度快)
2.insert into table1(col1,col2,col3) select top 20 col1,col2,col3 from table2 参考技术B 没有直接的联系无序更新
以上是关于sql 一个表里已经 有20行数据 ,然后要从另一个表里随机抽取20条 覆盖掉之前的数据的主要内容,如果未能解决你的问题,请参考以下文章
sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导