MYSQL如何随机读取多个分类中的某一条数据??
例如:
数据表
id name val memo
1 a 2 a2
2 a 1 a1
3 a 3 a3
4 b 1 b1
5 b 3 b3
6 b 2 b2
7 c 1 c1
8 c 2 c2我想要查找的是 从a,b,c 类中各找出一条数据,但是从a中取出的一条数据是随机的,b,c中取出的数据也是随机的一条,要如何做呢?
这是创建表的SQL代码CREATE TABLE IF NOT EXISTS `tb` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(10) default NULL,
`val` int(11) default NULL,
`memo` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;--
-- 转存表中的数据 `tb`
--INSERT INTO `tb` (`name`, `id`, `val`, `memo`) VALUES
('a', 1, 2, 'a2'),
('a', 2, 1, 'a1'),
('a', 3, 3, 'a3'),
('b', 4, 1, 'b1'),
('b', 5, 3, 'b3'),
('b', 6, 2, 'b2'),
('c', 7, 1, 'c1'),我使用了 distinct ,但是却不能完全实现,因为distinct就却除重复值,只是将同为a类的三个值取第一个而已 我需要的是同为a类的值取值可以随机的
使用命令:
Select id,distinct(name),val,memo from tb group by name order by rand() limit 0,30
得到的结果是:name id val memo
a 1 2 a2
c 7 1 c1
b 4 1 b1没有达到我的目标
有没有大神可以指教一下呢?
例如:
数据表
id name val memo
1 a 2 a2
2 a 1 a1
3 a 3 a3
4 b 1 b1
5 b 3 b3
6 b 2 b2
7 c 1 c1
8 c 2 c2我想要查找的是 从a,b,c 类中各找出一条数据,但是从a中取出的一条数据是随机的,b,c中取出的数据也是随机的一条,要如何做呢?
这是创建表的SQL代码CREATE TABLE IF NOT EXISTS `tb` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(10) default NULL,
`val` int(11) default NULL,
`memo` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;--
-- 转存表中的数据 `tb`
--INSERT INTO `tb` (`name`, `id`, `val`, `memo`) VALUES
('a', 1, 2, 'a2'),
('a', 2, 1, 'a1'),
('a', 3, 3, 'a3'),
('b', 4, 1, 'b1'),
('b', 5, 3, 'b3'),
('b', 6, 2, 'b2'),
('c', 7, 1, 'c1'),我使用了 distinct ,但是却不能完全实现,因为distinct就却除重复值,只是将同为a类的三个值取第一个而已 我需要的是同为a类的值取值可以随机的
使用命令:
Select id,distinct(name),val,memo from tb group by name order by rand() limit 0,30
得到的结果是:name id val memo
a 1 2 a2
c 7 1 c1
b 4 1 b1没有达到我的目标
有没有大神可以指教一下呢?
解决方案 »
- 求一段SQL的优化及修改的问题.
- 求助:如何在PostgreSQL8下配置Kerberos
- MYSQL导入数据问题
- 关于mysql for windows的备份问题
- 本人遇到的一个MSSQL问题..请各位大大指教.....
- ERROR 1044: Access denied for user: ''@'localhost' to database 'testdb'
- 请问谁有数据库维护策略的模板(java+mysql)
- 何为identifying relation,Non-identifying relation,informative relation?
- 请教关于Linux下MySQL数据库的连接、读取、写入的速度问题!
- 求一sql语句
- 往Mysql 插入数据出现Connection.close() has been closed
- 什么是数据库集群?
+----+------+------+------+
| id | name | val | memo |
+----+------+------+------+
| 1 | a | 2 | a2 |
| 6 | b | 2 | b2 |
| 7 | c | 1 | c1 |
+----+------+------+------+
3 rows in set (0.00 sec)mysql> Select id, name ,val,memo from (select * from tb order by rand())t group by name limit 0,30 ;
+----+------+------+------+
| id | name | val | memo |
+----+------+------+------+
| 2 | a | 1 | a1 |
| 4 | b | 1 | b1 |
| 7 | c | 1 | c1 |
+----+------+------+------+
3 rows in set (0.01 sec)mysql> Select id, name ,val,memo from (select * from tb order by rand())t group by name limit 0,30 ;
+----+------+------+------+
| id | name | val | memo |
+----+------+------+------+
| 3 | a | 3 | a3 |
| 6 | b | 2 | b2 |
| 7 | c | 1 | c1 |
+----+------+------+------+
[征集]分组取最大N条记录方法征集,及散分....