一个张表里面包含有两个字段 ID1 ID2 这两个ID在同一条数据里面是不可能一样的 但是在多条数据里面 ID1 数据 ID2数据可能是重复过就如:
ID1 ID2
1 2 第一条数据
2 3 第二条数据
2 4 第三条数据
1 5 第四条数据
1 3 第五条数据
现在我要从表里面的数据随机抽取10条数据
要求10条里面的 ID1 ID2的数据不得重复 可以配合语言程序 一起用 各位大大有什么好意见没?
ID1 ID2
1 2 第一条数据
2 3 第二条数据
2 4 第三条数据
1 5 第四条数据
1 3 第五条数据
现在我要从表里面的数据随机抽取10条数据
要求10条里面的 ID1 ID2的数据不得重复 可以配合语言程序 一起用 各位大大有什么好意见没?
贴建表及插入记录的SQL,及要求结果出来看看
+------+------+
| id1 | id2 |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
| 3 | 1 |
| 4 | 1 |
| 5 | 5 |
+------+------+
7 rows in set (0.00 sec)mysql> select * from (
-> select * from II
-> group by id1) aa
-> group by id2;
+------+------+
| id1 | id2 |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 5 | 5 |
+------+------+
3 rows in set (0.00 sec)
是要这样的结果
select * from (
select * from 一个张表 order by rand()
) t
group by ID1,ID2
) u order by rand()
limit 10
+------+------+
| id1 | id2 |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
| 3 | 1 |
| 4 | 1 |
| 5 | 6 |
| 6 | 7 |
| 8 | 9 |
| 11 | 12 |
| 9 | 123 |
| 111 | 234 |
| 111 | 345 |
+------+------+
13 rows in set (0.00 sec)mysql> select * from ii
-> where id2 not in
-> (
-> select id1 from ii
-> )
-> group by id1
-> order by rand() limit 10;
+------+------+
| id1 | id2 |
+------+------+
| 9 | 123 |
| 11 | 12 |
| 111 | 234 |
| 6 | 7 |
+------+------+
4 rows in set (0.00 sec)这样?会漏掉一些数据,要是你数据大的话,而且也只是随即抽取10条,应该也没事;
order by rand() limit 10;
可否贴点,测试的insert sql语句呢?
order by rand() limit 10;