mysql如何实现多层查询?

penguinhzf 2018-11-13 04:13:26
现在有两个表tb_1,tb2,内容如下:

表名:tb1
字段:name path
内容:aaa http://1212.com/1.exe
bbb http://1212.com/2.exe
ccc http://1212.com/3.exe

表名:tb2
字段:group name
内容:111 aaa
222 bbb
333 ccc
111 bbb

如何实现以下内容:
1、当group为111的时候,如何查询到对应tb1里面所有的path(结果应该是返回:http://1212.com/1.exe和http://1212.com/2.exe,因为在tb2里面,group为111的有两个name,分别是aaa和bbb,然后再查询出aaa和bbb对应的两个path)
2、当group为111或者222的时候,如何查询到对应tb1里面所有的path(结果应该还是返回:http://1212.com/1.exe和http://1212.com/2.exe,因为在111查询到的数据之后,222里面的bbb与111里面的aaa重复,所以不再显示出来,即去掉重复项)

请给例子,万分感激!!!
...全文
545 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
邹小青 2018-12-26
  • 打赏
  • 举报
回复
可以使用窗口函数,参考《如何协助MySQL实现窗口函数》这篇文章
贾斯提斯 2018-11-24
  • 打赏
  • 举报
回复
第一:
select a.path from tb1 as a join tb2 as b on a.name=b.name where b.group=111;

第二:
select distinct a.path from tb1 as a join tb2 as b on a.name=b.name where b.group in (111,222)
;


从此不换网名 2018-11-19
  • 打赏
  • 举报
回复
帮你顶一下吧
ACMAIN_CHM 2018-11-14
  • 打赏
  • 举报
回复
引用
2、当group为111或者222的时候,如何查询到对应tb1里面所有的path( 结果应该还是返回 http://1212.com/1.exe和http://1212.com/2.exe,因为在111查询到的数据之后,222里面的bbb与111里面的aaa重复,所以不再显示出来,即去掉重复项)
select path from tb1
where name in (select name from tb2 where tb2.group=111 or tb2.group=222)
ACMAIN_CHM 2018-11-14
  • 打赏
  • 举报
回复
引用
1、当group为111的时候,如何查询到对应tb1里面所有的path( 结果应该是返回 http://1212.com/1.exe和 http://1212.com/2.exe, 因为在tb2里面,group为111的有两个name,分别是aaa和bbb,然后再查询出aaa和bbb对应的两个path)

select path from tb1, tb2 where tb1.name=tb2.name and tb2.group=111

57,062

社区成员

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

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