怎么用 SQL 查询符合B列大于某个值的所有关联行

ccc8128 2017-02-09 11:07:56
示例表如下(A,B两列数据):
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、B列所有该商品的记录均被筛选出来。
筛选结果应该是(土豆由于不满足条件,被过滤掉了,而玉米、番茄的记录则全部保留):

A, B
yumi, 15
yumi, 5
yumi, 100
fanqie, 20
fanqie, 26
fanqie, 18
fanqie, 12
fanqie, 8

这个SQL 应该怎么写啊?
谢谢大侠啊!
...全文
464 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-02-13
  • 打赏
  • 举报
回复
VertigozZ 2017-02-10
  • 打赏
  • 举报
回复
so easy !!! SQL 如下:


select * 
from table_name t1
where t1.A in 
( 
  select t2.A 
  from 
  table_name t2 
  group by t2.A having max(t2.B) >15
)

VertigozZ 2017-02-10
  • 打赏
  • 举报
回复
引用 3 楼 chang8128 的回复:
发现另一个更节约算法的写法: http://ask.csdn.net/questions/362418#answer_381579 直接用Where 来的更快: @H7_N18 提供的写法: select * from test m where m.a in(select v.a from tesst v where v.b>=15) 谢谢两位好心人!
本质上是一样的,我只是对需要取的数据进行了较为严格的控制。
sunye_2010 2017-02-10
  • 打赏
  • 举报
回复
select * from t t1 where t1.A in (select t2.A from t t2 where t2.B>15); 也是刚刚学习sql,按上面写的查询结果是一样的,但是不知道写的是不是对的
ccc8128 2017-02-10
  • 打赏
  • 举报
回复
发现另一个更节约算法的写法: http://ask.csdn.net/questions/362418#answer_381579 直接用Where 来的更快: @H7_N18 提供的写法: select * from test m where m.a in(select v.a from tesst v where v.b>=15) 谢谢两位好心人!
ccc8128 2017-02-10
  • 打赏
  • 举报
回复
非常感谢啊!终于搞定了,原来这么简单,

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧