首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 急~~~~~~~请教关于having的使用 [已结贴,结贴人:pbiao]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:04:37 楼主

    我有一表,内容如下

    字段1   字段2
    1      A
    1      B
    2      B
    2      C
    1      D
    2      D
    1      E

    现在写一SQL语句,以字段1为主键,只要在1,和2中都出现了的字段2,就显示,最后结果为
    字段1   字段2
    1      B
    2      B
    1      D
    2      D


    我这样写的SQL
    select 字段1,字段2 
    from tablename
    group by 字段1,字段2
    having COUNT(字段2)>2


    可结果怎么不对那?那位指点一下


    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangCK
    • 等级:
    发表于:2008-05-09 17:06:241楼 得分:5
    select *
    from tb
    where 字段2 in(select 字段2 from tb group by 字段2 having count(*)>2)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liangCK
    • 等级:
    发表于:2008-05-09 17:09:012楼 得分:0
    SQL code
    create table tb(col1 int,col2 nvarchar(5)) insert into tb select 1,'' insert into tb select 1,'' insert into tb select 2,'' insert into tb select 2,'' insert into tb select 1,'' insert into tb select 2,'' insert into tb select 1,'' select * from tb where col2 in(select col2 from tb group by col2 having count(*)>=2) drop table tb /* col1 col2 ----------- ----- 1 B 2 B 1 D 2 D (所影响的行数为 4 行) */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:09:443楼 得分:5
    SQL code
    select distinct * from tablename as t where (select count(distinct column_1) from tablename where column_2=t.column_2)=2
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • utpcb
    • 等级:
    发表于:2008-05-09 17:09:504楼 得分:0
    小梁(我需要更加努力!) 不对吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • utpcb
    • 等级:
    发表于:2008-05-09 17:10:215楼 得分:5
    create table tb(col1 int,col2 nvarchar(5))
    insert into tb select 1,'A' 
    insert into tb select 1,'B' 
    insert into tb select 2,'B' 
    insert into tb select 2,'C' 
    insert into tb select 1,'D' 
    insert into tb select 2,'D' 
    insert into tb select 1,'E'

    select *
    from tb
    where col2 in(select col2 from tb group by col2 having count(*)>=2)

    drop table tb

    /*
    col1        col2 
    ----------- -----
    1          B
    2          B
    1          D
    2          D

    (所影响的行数为 4 行)
    */

    现在是对的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:14:556楼 得分:0
    引用 4 楼 utpcb 的回复:
    小梁(我需要更加努力!) 不对吧

    having count(distinct 字段1)>=2
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:20:157楼 得分:0
    SQL code
    declare @t table(字段1 int,字段2 varchar) insert into @t select 1,'A' insert into @t select 1,'B' insert into @t select 2,'B' insert into @t select 3,'C' insert into @t select 1,'D' insert into @t select 2,'D' insert into @t select 1,'E' select * from @t where 字段2 in(select 字段2 from @t group by 字段2 having count(1)>1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:20:458楼 得分:0
    哦,好象理解错楼主意思了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:22:179楼 得分:0
    SQL code
    --这样才对 declare @t table(字段1 int,字段2 varchar) insert into @t select 1,'A' insert into @t select 1,'B' insert into @t select 2,'B' insert into @t select 3,'C' insert into @t select 1,'D' insert into @t select 2,'D' insert into @t select 1,'E' insert into @t select 3,'E' select * from @t where 字段2 in (select 字段2 from @t where 字段1 in(1,2) group by 字段2 having count(1)>1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:24:5510楼 得分:5
    引用楼主 pbiao 的帖子:
    我这样写的SQL 
    select 字段1,字段2 
    from tablename 
    group by 字段1,字段2 
    having COUNT(字段2)>2 


    可结果怎么不对那?那位指点一下 


    select 字段1,字段2 
    from tablename 
    group by 字段1,字段2 
    having COUNT(字段2)>=2
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved