你要的是where unit.u_river in (select distinct pl_way_c.pl_code from pl_way_c)?不好意思楼主我也没看清楚你的意思
可以用 select * from table1 where a in ( select b from table2 where ……)
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表的字段,那问题才比较有味道,欢迎大家都来讨论,其实答案也很简单
select * from table1 where a in ( select b from table2 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表的字段,那问题才比较有味道,欢迎大家都来讨论,其实答案也很简单