我觉得你写的第二个查询语句有问题:这两个where语句之间是什么关系? select k60.a0102 as 管理单位, count(k60.k6001) as 桥梁总数 from k60 where k60.a0102 in(select where a50.a0102 in (select a01.a0102 from a01))from a50
group by k60.a0102 having count(k60.k6001)>30 order by k60.a0102 desc 我觉得是不是应该这样呀?不知是否符合你的原意?
如果A01与a50之间,a50与k60之间都是一对多的关系,则上述查询结果完全一致。如果其中之一是多对多的关系,则第一条SQL语句记录数多。举例说明如下: a01: a0102 ------ 1 2 2a50: a0102 ------ 2 2 3select a50.a0102 from a50 join a01 on a50.a0102 = a01.a0102 结果如下: -------- 2 2 2 2select a50.a0102 from a50 where a50.a0102 in (select a01.a0102 from a01) 结果如下: ------- 2 2至于那种正确,则看需求了!
查询分析器里运行的结果是1是正确的,2、3结果完全一样,缺少记录。
select k60.a0102 as 管理单位, count(k60.k6001) as 桥梁总数 from k60
where k60.a0102 in(select
where a50.a0102 in
(select a01.a0102 from a01))from a50
group by k60.a0102
having count(k60.k6001)>30
order by k60.a0102 desc
我觉得是不是应该这样呀?不知是否符合你的原意?
a01:
a0102
------
1
2
2a50:
a0102
------
2
2
3select a50.a0102 from a50 join a01 on a50.a0102 = a01.a0102
结果如下:
--------
2
2
2
2select a50.a0102 from a50 where a50.a0102 in (select a01.a0102 from a01)
结果如下:
-------
2
2至于那种正确,则看需求了!