有表如下
主键 字段A 字段B
1 a 111111
2 b 111111
3 c 222222
4 d 222222
5 a 111111
6 c 111111
7 f 111111
8 a 222222
9 c 222222希望得到的结果是
1 a 111111
3 c 222222
5 a 111111
9 c 222222
因为字段B只能属于一个字段A的值。以字段B分组。第一次出现的字段A和字段B组合为合法的(例如id为1、5的a和id为3的c)
不是第一次出现的字段A+字段B组合不查询出来。
表达的不是很清楚,看看得到的结果大概是这样。希望帮一下忙。谢谢!
主键 字段A 字段B
1 a 111111
2 b 111111
3 c 222222
4 d 222222
5 a 111111
6 c 111111
7 f 111111
8 a 222222
9 c 222222希望得到的结果是
1 a 111111
3 c 222222
5 a 111111
9 c 222222
因为字段B只能属于一个字段A的值。以字段B分组。第一次出现的字段A和字段B组合为合法的(例如id为1、5的a和id为3的c)
不是第一次出现的字段A+字段B组合不查询出来。
表达的不是很清楚,看看得到的结果大概是这样。希望帮一下忙。谢谢!
from 有表如下 a
where exists (select 1 from 有表如下 where 字段A=a.字段A and 字段B =A.字段B and 主键!= a.主键)
字段A比喻为用户,字段B比喻为手机号。
一个用户可以有多个手机号。一个手机号只能属于一个用户。
当第一次在数据库出现的“用户+手机号”组合视为合理的,例如 a用户和111111手机号。
后面出现的不用查询出来,因为不合理。例如 b用户和1111111手机号
但是 a用户和111111手机号可以重复出现。。所以查询结果如下:
1 a 111111
3 c 222222
5 a 111111
9 c 222222
from 有表如下 a
where exists (select 1 from 有表如下 where 字段A=a.字段A and 字段B =A.字段B and 主键!= a.主键)
这个语句的结果不是这样吗? 如果不是,那你得到的结果是什么样?
1 a 111111
3 c 222222
5 a 111111
9 c 222222
如果有 两条 a 222222的数据。这样也能查询得出来。
题目含义是:
当第一次在数据库出现的“用户+手机号”组合视为合理的,例如 a用户和111111手机号。
后面出现的不用查询出来,因为不合理。例如 b用户和1111111手机号数据库里:c 222222是最早出现的数据。
那么即使后面有再多条 a 222222也不应该查询出来。
主键 字段A 字段B
1 a 111111
2 b 111111
3 c 222222
4 d 222222
5 a 111111
6 c 111111
7 f 111111
8 a 222222
9 c 222222
10 f 333333
11 a 222222
12 a 444444字段A比喻为用户,字段B比喻为手机号。
一个用户可以有多个手机号。一个手机号只能属于一个用户。
当第一次在数据库出现的“用户+手机号”组合视为合理的,例如 a用户和111111手机号。
后面出现的不用查询出来,因为不合理。例如 b用户和1111111手机号
但是 a用户和111111手机号可以重复出现。。所以查询结果如下:得到的结果应该是:
1 a 111111
3 c 222222
5 a 111111
9 c 222222
10 f 333333
12 a 444444
+----+------+--------+
| id | a | b |
+----+------+--------+
| 1 | a | 111111 |
| 2 | b | 111111 |
| 3 | c | 222222 |
| 4 | d | 222222 |
| 5 | a | 111111 |
| 6 | c | 111111 |
| 7 | f | 111111 |
| 8 | a | 222222 |
| 9 | c | 222222 |
| 10 | f | 333333 |
| 11 | a | 222222 |
| 12 | a | 444444 |
+----+------+--------+
12 rows in set (0.04 sec)mysql> select *
-> from woaiyingyu321
-> where (a,b) in (select a,b from woaiyingyu321 group by b);
+----+------+--------+
| id | a | b |
+----+------+--------+
| 1 | a | 111111 |
| 3 | c | 222222 |
| 5 | a | 111111 |
| 9 | c | 222222 |
| 10 | f | 333333 |
| 12 | a | 444444 |
+----+------+--------+
6 rows in set (0.10 sec)mysql>