数据库中随机选择数据并保存在另一张表中"/>
数据库(1):用sql在数据库中随机选择数据并保存在另一张表中
数据库(1):在数据库中随机选择数据
- 一、问题
- 二、sql语句
- 1.用sql语言进行进行随机取数据
- 2.将文件的数据进行打乱
- 3.从文件 a 1 a_1 a1和 b 1 b_1 b1中随机抽取数据组成新文件
- 三、其他语句
- 1.删除某一行的值为Null
- 2.删除某一列
- 3.添加一列数据
一、问题
本人在进行数据的处理时,就是在一个行数为245条数据excel文件中随机选取200条数据,分别存入到两个excel中,如存到文件 a 1 a_1 a1和 b 1 b_1 b1中,每个文件100条数据,且数据不能重复,并将文件 a 1 a_1 a1和 b 1 b_1 b1分别打乱,另存到文件 a 2 a_2 a2和 b 2 b_2 b2中,在刚开始的时候,本人用python的第三方库openpyxl进行文件的读取并保存,发现过程很繁琐以及浪费时间,所以,进行一些查找就用了sql语句,以下方式只适合用于小批量的数据。
二、sql语句
1.用sql语言进行进行随机取数据
本人的数据的格式为:
如上图所示,一共就5列数据,首先我们先建立文件 a 1 a_1 a1,其sql语句为:
# a_1为要建立的表格,second为总的表格
CREATE TABLE a_1 as SELECT * FROM second ORDER BY RAND() LIMIT 100
建立好文件 a 1 a_1 a1以后,我们要建立文件 b 1 b_1 b1,要求为: b 1 b_1 b1文件也要为100条数据,但是在文件 b 1 b_1 b1中的数据和文件 a 1 a_1 a1的数据不能相同,其sql语句如下:
CREATE TABLE b_1 as SELECT * FROM second WHERE not EXISTS(SELECT * from a_1 WHERE second.CASEID = a_1.CASEID) ORDER BY RAND() LIMIT 100
接下来需要进行检查,因为文件的 c a s e i d caseid caseid是独一无二的,所以文件 a 1 a_1 a1和文件 b 1 b_1 b1的 c a s e i d caseid caseid是不相同的,我们用sql语句检查一下:
SELECT CASEID FROM a_1 WHERE EXISTS(SELECT CASEID from b_1 WHERE a_1.CASEID = b_1.CASEID)
查询的结果如下:
证明上面数据的分割是正确的
2.将文件的数据进行打乱
在进行建立文件 a 1 a_1 a1的时候,就已经用到了将数据打乱的语句
CREATE TABLE a_2 as SELECT * from a_1 ORDER BY RAND() LIMIT 100
将打乱的数据保存在文件 a 2 a_2 a2中
3.从文件 a 1 a_1 a1和 b 1 b_1 b1中随机抽取数据组成新文件
从文件 a 1 a_1 a1和 b 1 b_1 b1中各自随机抽取50条数据组成一个新的表格C,其中C的数据为100条,sql语句为:
CREATE TABLE c as (SELECT * from a_1 ORDER BY RAND() LIMIT 50) UNION (SELECT * FROM b_1 ORDER BY RAND() LIMIT 50)
可以检查以下结果:
证明以上操作是正确的。
三、其他语句
1.删除某一行的值为Null
# domain 为列名
DELETE from second WHERE domain is NULL
2.删除某一列
# intent1 为列名
ALTER TABLE second DROP COLUMN intent1
3.添加一列数据
# intent_1 为要添加的列名,添加之后intent_1列的值为Null
ALTER TABLE second ADD COLUMN intent_1 VARCHAR(255)
更多推荐
数据库(1):用sql在数据库中随机选择数据并保存在另一张表中
发布评论