group by having count(*) > 1 的問題

baiynije 2008-07-25 03:08:31
有如下幾個SQL
1.
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
當執行以上這條時結果如下
manno newno
----- -----
C618-0800123 230A
C618-0800123 230A
C618-0800123 230A

2.
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno
當執行這條時結果如下
manno newno
----- -----
C618-0800123 230A

3.
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count( *) >1

當執行這條時結果也和第2條的結果一樣,不知道是怎么回事?請大家指教
...全文
12472 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
a282501584 2012-10-31
  • 打赏
  • 举报
回复
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno
suners 2010-01-21
  • 打赏
  • 举报
回复
jnhjnm
WWWWA 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 baiynije 的回复:]
其實就是找出manno與newno就行了,條件就是manno有對應2個以上的newno ,如果一個manno只對應一個newno則不用出來
[/Quote]
select a.manno,a.newno from tt a inner join
(select manno,newno
from tt
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count(*)>=2 ) b
on a.manno=b.manno and a.newno=b.newno
用这个试试
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
select a.manno,a.newno from tt a inner join
(select manno,newno
from tt
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count(*)>=2 ) b
on a.manno=b.manno and a.newno=b.newno
baiynije 2008-07-28
  • 打赏
  • 举报
回复
也可以說我想得到分組後組數大於1的資料
baiynije 2008-07-28
  • 打赏
  • 举报
回复
其實就是找出manno與newno就行了,條件就是manno有對應2個以上的newno ,如果一個manno只對應一個newno則不用出來
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
就是说找出
manno cardno prosscode newno
----- ------ --------- -----
C618-0800123 001 230 230A
C618-0800123 002 230 230A
记录?
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
select a.* from tt a inner join
(select manno,newno
from tt
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count(*)>=2 ) b
on a.manno=b.manno and a.newno=b.newno

呵呵,要准确表达自己的意思不容易。
baiynije 2008-07-28
  • 打赏
  • 举报
回复
不好意思,可能是我沒說清楚,我要的是把這種一個manno對應多個newno記錄的manno找出來,謝謝!
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
就是说找出
C618-0800123 003 230 230C
这条记录?如是
select a.* from tt a inner join
(select manno,newno
from tt
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count(*)=1 ) b
on a.manno=b.manno and a.newno=b.newno
baiynije 2008-07-28
  • 打赏
  • 举报
回复
manno cardno prosscode newno
----- ------ --------- -----
C618-0800123 001 230 230A
C618-0800123 002 230 230A
C618-0800123 003 230 230C
如果資料是這樣的,那這種資料就應該出來,因為C618-0800123對應有兩個newno
baiynije 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wwwwb 的回复:]
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count( *)=1
试试吧
[/Quote]
這樣出來的是不是manno,newno一對一的數據?
我要的是manno,newno,一對多的數據
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
贴记录及正确结果出来看看
baiynije 2008-07-28
  • 打赏
  • 举报
回复
那我如何能得到我想要的數據呢?
aizong 2008-07-28
  • 打赏
  • 举报
回复
baiynije :把字段列表加上count(*)看看就知道你的想法对不对了.

wwwwb 2008-07-28
  • 打赏
  • 举报
回复
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count( *)=1
试试吧
baiynije 2008-07-28
  • 打赏
  • 举报
回复
manno cardno prosscode newno
----- ------ --------- -----
C618-0800123 001 230 230A
C618-0800123 002 230 230A
C618-0800123 003 230 230A

象這些數據,因為manno和newno 都是一樣的,所以分組後只有一個,所以不應該出來,我要的是同一個manno 對應有兩個以上不同的newno的資料。不知道如何寫呢?
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
select manno,newno
from y_sfcfsh
where manno ='C618-0800123' and prosscode ='230' and newno <> '' and newno <> null and status='3'
group by manno,newno having count( *)=1
baiynije 2008-07-28
  • 打赏
  • 举报
回复
象上面的數據得出的結果應該是沒有記錄,因為manno,newno都是一樣的
wwwwb 2008-07-28
  • 打赏
  • 举报
回复
将满足having count( *) >1的记录找出来?
加载更多回复(17)

2,596

社区成员

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

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