楼主: 沧海ふ无涯
收起左侧

[软件] [sqlserver]怎么单表查询具多个相同字段值都不重复的列

[复制链接]
沧海ふ无涯
 楼主| 发表于 2014-8-7 14:37:00 | 显示全部楼层
peng85344558 发表于 2014-8-7 14:32
是否要这样?
select roomid from xx group by week having count(id)=1
以星期分组  统计组里id个数=1的 ...

你没看我的说明.........时间不是有的么...
周次星期和节次来表示的
我更新了帖子  写了个不怎么好的代码
沧海ふ无涯
 楼主| 发表于 2014-8-7 14:37:00 | 显示全部楼层
本帖最后由 沧海ふ无涯 于 2014-8-7 14:39 编辑
peng85344558 发表于 2014-8-7 14:32
是否要这样?
select roomid from xx group by week having count(id)=1
以星期分组  统计组里id个数=1的 ...


你没看我的说明.........时间不是有的么...
周次星期和节次来表示的
我更新了帖子  写了个不怎么好的代码
而且你这样写roomid会报错的    不包含在聚合里面
peng85344558
发表于 2014-8-7 14:53:42 | 显示全部楼层
select id from
(select id from xx group by cycletime having count(id)=1) as a,
(select id from xx group by week having count(id)=1) as b,
(select id from xx group by section having count(id)=1) as c,
(select id from xx group by roomid having count(id)=1) as d
where a.id=b.id and b.id=c.id and c.id=d.id
试试看这样 逻辑应该是你要的吧~~
ps:一定不能用not in  会死人的
沧海ふ无涯
 楼主| 发表于 2014-8-7 15:06:07 | 显示全部楼层
本帖最后由 沧海ふ无涯 于 2014-8-7 15:08 编辑
peng85344558 发表于 2014-8-7 14:53
select id from
(select id from xx group by cycletime having count(id)=1) as a,
(select id from xx ...


怎么每次都会重复提交一次.....见鬼了
沧海ふ无涯
 楼主| 发表于 2014-8-7 15:06:09 | 显示全部楼层
本帖最后由 沧海ふ无涯 于 2014-8-7 15:14 编辑
peng85344558 发表于 2014-8-7 14:53
select id from
(select id from xx group by cycletime having count(id)=1) as a,
(select id from xx ...

选择列表中的列 'apply.ID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

然后你写的代码是不是可以精简成这样:

select id  from apply group by roomid,[cycletime],[week],section having count(roomid)=1

错误是一样的  ID没包含在聚合函数里面
peng85344558
发表于 2014-8-7 15:26:39 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-7 15:06
选择列表中的列 'apply.ID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

然后你写的代码是 ...

apply表各列的属性 给我看看
没道理这个语句会报这个问题的
要这么精简的话 后面要多+count(xx)=1
沧海ふ无涯
 楼主| 发表于 2014-8-7 15:52:01 | 显示全部楼层
peng85344558 发表于 2014-8-7 15:26
apply表各列的属性 给我看看
没道理这个语句会报这个问题的
要这么精简的话 后面要多+count(xx)=1

select avg(id) as ID from apply group by roomid,[cycletime],[week],section having count(id)=1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
peng85344558
发表于 2014-8-8 12:50:19 | 显示全部楼层
本帖最后由 peng85344558 于 2014-8-8 12:56 编辑
沧海ふ无涯 发表于 2014-8-7 15:52
select avg(id) as ID from apply group by roomid,[cycletime],[week],section having count(id)=1


先测试下
select group_concat(id) as ID from apply group by roomid,cycletime,week,section having count(id)=1
看看是否ID输出 每行仅有1个数字  
如果是 那么随便用一个avg是可以的


多问一句  你要查询的 是roomid,cycletime,week,section都一样才成立的ID  还是只要有一个不一样就成立的ID???
沧海ふ无涯
 楼主| 发表于 2014-8-9 04:22:05 | 显示全部楼层
peng85344558 发表于 2014-8-8 12:50
先测试下
select group_concat(id) as ID from apply group by roomid,cycletime,week,section having ...


roomid,cycletime,week,section  不完全一样~~
周末双休  暂时无法测试代码
peng85344558
发表于 2014-8-9 10:12:20 | 显示全部楼层
沧海ふ无涯 发表于 2014-8-9 04:22
roomid,cycletime,week,section  不完全一样~~
周末双休  暂时无法测试代码

不完全一样……………………………………
那么可以换下思路吧  把roomid,cycletime,week,section四个参数统合成一个判断条件pan,只要对pan进行分组,取count=1的就可以了  可以在数据库新增字段pan  

前面几楼说的都是完全不一样的分类  所以无视吧   
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-7-3 12:41 , Processed in 0.114814 second(s), 14 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表