PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
这是创建表的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
答案:
mysql> Select id, name ,val,memo from (select * from tb order by rand())t group by name limit 0,30 ;
+----+------+------+------+
| 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 |
+----+------+------+------+
转载请注明:谷谷点程序 » php mysql 从数组结果集中取出不同分类的一条信息