SQL 语句如何查询符合某条件的所有关联行

示例表如下:
A, B
yumi, 15
yumi, 5
yumi, 100
tudou, 10
tudou, 12
tudou, 9
fanqie, 20
fanqie, 26
fanqie, 18
fanqie, 12
fanqie, 8

如上表中,希望筛选A列的商品中,只要B列存在大于15的记录,那么A列所有该商品的记录均被筛选出来。
筛选结果应该是(土豆由于不满足条件,被过滤掉了,而玉米、番茄的记录则全部保留):
A, B
yumi, 15
yumi, 5
yumi, 100
fanqie, 20
fanqie, 26
fanqie, 18
fanqie, 12
fanqie, 8

谢谢大侠啊!

4个回答

mysql> select * from fruits;
+--------+--------+
| name | number |
+--------+--------+
| yumi | 15 |
| yumi | 5 |
| yumi | 100 |
| tudou | 10 |
| tudou | 12 |
| tudou | 9 |
| fanqie | 20 |
| fanqie | 26 |
| fanqie | 18 |
| fanqie | 12 |
| fanqie | 8 |
+--------+--------+
11 rows in set (0.00 sec)

mysql> select A.name,A.number from fruits A,(select distinct(name) from fruits where number>15) B where A.name = B.name;
+--------+--------+
| name | number |
+--------+--------+
| yumi | 15 |
| yumi | 5 |
| yumi | 100 |
| fanqie | 20 |
| fanqie | 26 |
| fanqie | 18 |
| fanqie | 12 |
| fanqie | 8 |
+--------+--------+
8 rows in set (0.01 sec)

假设那张有A,B字段的表叫做 test 表
select * from test m where m.a in(select v.a from tesst v where v.b>=15)

谢谢,发现还是H7_N18 的算法更为节省时间,谢谢!@H7_N18

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐