
正文
mysql怎么抽数据库 mysql数据抽取
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
mysql数据库中随机抽取该分类下的几条数据怎么写?
我这里给你一个 类似的例子, 表结构也就是简单的 分类, 明细.
要查询每个分类下面, 随机明细 几条的情况.
你可以参考参考.
测试表与测试数据。
CREATE TABLE test_order_by_rand (group_code varchar(10), name varchar(10));
INSERT INTO test_order_by_rand VALUES('水果', '苹果');
INSERT INTO test_order_by_rand VALUES('水果', '梨子');
INSERT INTO test_order_by_rand VALUES('水果', '香蕉');
INSERT INTO test_order_by_rand VALUES('水果', '桃子');
INSERT INTO test_order_by_rand VALUES('水果', '菠萝');
INSERT INTO test_order_by_rand VALUES('蔬菜', '萝卜');
INSERT INTO test_order_by_rand VALUES('蔬菜', '白菜');
INSERT INTO test_order_by_rand VALUES('蔬菜', '蘑菇');
INSERT INTO test_order_by_rand VALUES('蔬菜', '毛豆');
INSERT INTO test_order_by_rand VALUES('蔬菜', '青椒');
INSERT INTO test_order_by_rand VALUES('坚果', '核桃');
INSERT INTO test_order_by_rand VALUES('坚果', '榛子');
INSERT INTO test_order_by_rand VALUES('坚果', '杏仁');
INSERT INTO test_order_by_rand VALUES('坚果', '花生');
INSERT INTO test_order_by_rand VALUES('坚果', '开心果');
预期目标, 按照 group_code 进行分组, 每个分组内, 进行随机获取数据.
SELECT
group_code,
name
FROM
(
SELECT
CASE
WHEN @cn != group_code THEN @rownum:= 1
ELSE @rownum:= @rownum + 1
END AS No,
group_code,
@cn := group_code AS group_code,
name
FROM
(SELECT @rownum:=0) r,
(SELECT @cn:= '') p,
(SELECT * FROM test_order_by_rand order by group_code, rand()) tmp
) subQuery
WHERE
No = 3
ORDER BY
group_code;
这里套了2层子查询, 其中的
(SELECT * FROM test_order_by_rand order by group_code, rand()) tmp
用于实现, 针对每一个 group_code 进行分组, 下属的 name 的数据, 进行随机排序
其中的
(......) subQuery
用于实现, 针对 前面的 按 group_code 分组, name 随机排序后的数据。
模拟一个 row_number() over(partition by group_code) 的处理
最后的 No = 3 用于限制, 每一个 group_code 下面, 显示多少行.
执行结果:
+------------+--------+
| group_code | name |
+------------+--------+
| 水果 | 苹果 |
| 水果 | 香蕉 |
| 水果 | 梨子 |
| 蔬菜 | 青椒 |
| 蔬菜 | 白菜 |
| 蔬菜 | 蘑菇 |
| 坚果 | 核桃 |
| 坚果 | 花生 |
| 坚果 | 开心果 |
+------------+--------+
9 rows in set (0.00 sec)
相关问答
Q1: 怎么提取MYSQL数据库的所有数据到另一个MYSQL数据库
可以试着把数据库转储到sql文件mysql怎么抽数据库;然后在另一个地方运行sql文件
Q2: mysql数据库 如果数据库中有800万条数据,我想随机抽取10000条,要怎么做抽取的更快
什么叫抽取的更快?和什么比更快?你现在是怎么做的?
数据库性能是和很多因素有关的:
想要数据库响应的快,首先要有好的服务器。
如果数据库是在远程服务器上,还要有充足和流畅的带宽网络。
合理安排表的结构,建立索引。
针对你这个,800万条数据如果在一个表里,要有个整数型的ID作为主键,并做索引。如果数据是从不同的表里抽出来再组合起来的,表与表之间的链接键尽量用整数型并做索引。
然后生成10000个随机数,在ID里查找这1万个数字,取出对应的数据。
处理过程放到数据库端。
针对你这个,10000个随机数的生成函数用存储过程的形式存在服务器端。
Q3: java连接mysql,并随机抽取数据库中的一些记录并显示出来?
package com.joinmysql.demo;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
public class MysqlDemo {
public static void main(String[] args) throws Exception {
Connection conn = null;
String sql;
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
// 避免中文乱码要指定useUnicode和characterEncoding
// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
// 下面语句之前就要先创建javademo数据库
String url = "jdbc:mysql://localhost:3306/test?user=rootpassword=jiangweiuseUnicode=truecharacterEncoding=UTF8";
try {
// 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
// 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
// or:
// com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
// or:
// new com.mysql.jdbc.Driver();
System.out.println("成功加载MySQL驱动程序");
// 一个Connection代表一个数据库连接
conn = DriverManager.getConnection(url);
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
if (result != -1) {
System.out.println("创建数据表成功");
sql = "insert into student(NO,name) values('2012001','陶伟基')";
result = stmt.executeUpdate(sql);
sql = "insert into student(NO,name) values('2012002','周小俊')";
result = stmt.executeUpdate(sql);
sql = "select * from student";
ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
System.out.println("学号\t姓名");
while (rs.next()) {
System.out.println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
}
}
} catch (SQLException e) {
System.out.println("MySQL操作错误");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close();
}
}
}
Q4: mysql怎么导出数据库
1、 mysqldump命令备份数据
在MySQL中提供mysql怎么抽数据库了命令行导出数据库数据以及文件mysql怎么抽数据库的一种方便mysql怎么抽数据库的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单mysql怎么抽数据库了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 xxx.sql
2、 mysqldump常用操作实例
2.1备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 备份多个表的数据和结构(数据mysql怎么抽数据库,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
Q5: mysql怎么使用数据库
你需要把那个shows.MYD 所在的那个文件夹拷贝到mysql安装目录的data目录下。
如果你是默认安装,应该在c:\Program Files\MySQL\MySQL Server 5.0\data\
注意是整个shows那些文件所在的目录。连目录一起拷贝哈。按你的描述,就应该是data目录了。 将d:\data1\下的data目录拷贝到c:\Program Files\MySQL\MySQL Server 5.0\data\下面。
完成之后,重启mysql看看,可以运行services.msc 在里面找到mysql 重新启动mysql。(前提是你安装的时候配置了mysql服务,我想你应该配置了吧)
重启之后 进入命令行,
然后mysql -uroot -p 进入mysql
show databases;
看看能不能看到一个叫data数据库。
如果能看到,恭喜你, 继续下面的命令。 如果不行,看后面的方法B。
use data
alter table shows add 列名 类型 长度 等等
举例:
增加一个int型名为id的列
alter table shows add id int(11) not null default '0';
alter table shows add name varchar(32) not null default '';
如果需要指定列的位置,假如加入的列在number列后面。那么
alter table shows add id int(11) not null default '0' after number;
方法B。
如果按之前说的文件拷贝方式,重启进入mysql后看不到data 这个数据库,那么可能是你们的mysql版本不一致造成的,应该说这个可能性很大。
那么,你让你朋友给你导出数据库内容。 用mysqldump命令。
mysqldump -uroot -p -D 数据库名.表名 sss.sql
你拿到这个sss.sql后 再把它导入到你的mysql数据库。
在cmd下运行
mysql -uroot -p testsss.sql
或者
在mysql命令行下运行
use test
source sss.sql
这样shows表就导入到你的test数据库了。
剩下的就简单了哈。和前面没啥差别。
use test
alter 命令
怎样,按这个方法,一切搞定。
关于mysql怎么抽数据库和mysql数据抽取的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







