这有什么复杂的呀,我就是想问问有没有在where里的类似distinct的函数

解决方案 »

  1.   

    你要的是where unit.u_river in (select distinct pl_way_c.pl_code from pl_way_c)?不好意思楼主我也没看清楚你的意思
      

  2.   

    可以用
    select * from table1 where a in ( select b from table2 where ……)
      

  3.   

    select pl_way_c.pl_way,count(u_tmp) from pl_way_c,unit where 
    unit.u_river= pl_way_c.pl_code group by pl_way_c.pl_way其中pl_way_c为一个表,unit为一个表现在的问题是“unit.u_river= pl_way_c.pl_code”的条件,因为它们相等的条件不唯一导致结果错误
    举个例子,如果unit,u_river是8的话那么在漂亮pl_way_c中可能有两个值为8的记录,换句话说就是条件不是一对一的关系,而是一对多,有没有类似unit.u_river= distinct(pl_way_c.pl_code)这样的语句呀,可是这样写又不行!
    答案:
    select pl_way_c.pl_way,count(u_tmp) from pl_way_c where 
    pl_way_c.pl_code in (select u_river from unit) group by pl_way_c.pl_way
    你这个题出的有问题,其实你不是就想选unit.u_river= pl_way_c.pl_code无论unit表中有几笔记录可以与pl_way_c表中记录对应,也只选第一笔对应记录
    但如果那样你的上句SQL的select pl_way_c.pl_way,count(u_tmp)就没什么大意思了,因为你其实并不取unit表的数据,那还不如改为 pl_way_c.pl_code in (select u_river from unit),这不正好?
    如果你要在查询结果里显示unit表的字段,那问题才比较有味道,欢迎大家都来讨论,其实答案也很简单