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中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导

从另一列 SQL 返回正在运行的最大列

使用多个单元格从另一张纸中搜索数据吗?

用PHP+mysql查询两个表,然后怎么样把已经查出来的两个数组合并在一起,两张表里有一个相同的字段

SQL 从另一个表中的另一列更新一列

C# 更新SQL Server数据库备注信息从另一数据库