现在有两个表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重复,所以不再显示出来,即去掉重复项)请给例子,万分感激!!!

解决方案 »

  1.   


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

  2.   


    select path from tb1
    where name in (select name from tb2 where tb2.group=111 or tb2.group=222)
      

  3.   

    第一:
    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)
    ;
      

  4.   

    可以使用窗口函数,参考《如何协助MySQL实现窗口函数》这篇文章