我想查询指定值的指定条记录,折腾了一个上午,还是不会,向大家请教,看怎么实现。
表结构
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`class` int(4) NOT NULL,
PRIMARY KEY (`id`)
)INSERT INTO `test` VALUES (1, '篮球', 1);
INSERT INTO `test` VALUES (2, '足球', 1);
INSERT INTO `test` VALUES (3, '羽毛球', 1);
INSERT INTO `test` VALUES (4, '乒乓球', 1);
INSERT INTO `test` VALUES (5, '唱歌', 2);
INSERT INTO `test` VALUES (6, '跳舞', 2);
INSERT INTO `test` VALUES (7, '笛子', 2);
INSERT INTO `test` VALUES (8, '钢琴', 2);
INSERT INTO `test` VALUES (9, '奥数', 3);
INSERT INTO `test` VALUES (10, '物理', 3);
INSERT INTO `test` VALUES (11, '写作', 4);取出每个class相同值的两条记录,超过两条就只取两条,不足两条就取全部,期望结果如下。 id name class
1 篮球 1
2 足球 1
5 唱歌 2
6 跳舞 2
9 奥数 3
10 物理 3
11 写作 4 谢谢大家了。
表结构
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`class` int(4) NOT NULL,
PRIMARY KEY (`id`)
)INSERT INTO `test` VALUES (1, '篮球', 1);
INSERT INTO `test` VALUES (2, '足球', 1);
INSERT INTO `test` VALUES (3, '羽毛球', 1);
INSERT INTO `test` VALUES (4, '乒乓球', 1);
INSERT INTO `test` VALUES (5, '唱歌', 2);
INSERT INTO `test` VALUES (6, '跳舞', 2);
INSERT INTO `test` VALUES (7, '笛子', 2);
INSERT INTO `test` VALUES (8, '钢琴', 2);
INSERT INTO `test` VALUES (9, '奥数', 3);
INSERT INTO `test` VALUES (10, '物理', 3);
INSERT INTO `test` VALUES (11, '写作', 4);取出每个class相同值的两条记录,超过两条就只取两条,不足两条就取全部,期望结果如下。 id name class
1 篮球 1
2 足球 1
5 唱歌 2
6 跳舞 2
9 奥数 3
10 物理 3
11 写作 4 谢谢大家了。
+----+--------+-------+
| id | name | class |
+----+--------+-------+
| 1 | 篮球 | 1 |
| 2 | 足球 | 1 |
| 3 | 羽毛球 | 1 |
| 4 | 乒乓球 | 1 |
| 5 | 唱歌 | 2 |
| 6 | 跳舞 | 2 |
| 7 | 笛子 | 2 |
| 8 | 钢琴 | 2 |
| 9 | 奥数 | 3 |
| 10 | 物理 | 3 |
| 11 | 写作 | 4 |
+----+--------+-------+
11 rows in set (0.00 sec)mysql>
mysql> select * from test a
-> where (select count(*) from test
-> where class=a.class and id<a.id)<2;
+----+------+-------+
| id | name | class |
+----+------+-------+
| 1 | 篮球 | 1 |
| 2 | 足球 | 1 |
| 5 | 唱歌 | 2 |
| 6 | 跳舞 | 2 |
| 9 | 奥数 | 3 |
| 10 | 物理 | 3 |
| 11 | 写作 | 4 |
+----+------+-------+
7 rows in set (0.00 sec)mysql>