首页 新闻 会员 周边

有关SQL的一个查询操作,感觉不难,就是写不出正确sql。( ▼-▼ )

0
悬赏园豆:50 [已解决问题] 解决于 2020-04-03 17:17

case1:
数据:
A
A
A
查询出来是
A
=============
case2:
数据:
A
B
A
查询出来是
A
B
A
怎么用一个sql来实现包括上面两个case的查询呢?先谢谢了...

舵手的主页 舵手 | 初学一级 | 园豆:150
提问于:2016-03-29 21:26
< >
分享
最佳答案
0
SELECT DISTINCT * INTO #A FROM A
IF @@ROWCOUNT>1
BEGIN
    SELECT * FROM A
END
ELSE
BEGIN
    SELECT * FROM #A
END

可以把临时表改成表变量,表变量快一点

收获园豆:50
二洋 | 菜鸟二级 |园豆:267 | 2016-05-24 15:44
其他回答(6)
0

不太理解你的需求

sz_zzm | 园豆:293 (菜鸟二级) | 2016-03-29 21:29

就是想实现,如果查询出的所有数据都相等时就显示一条,相当于作了一次消除相同数据处理。如果查询出的数据有一条跟其他数据不相等,就显示所有数据,不做任何消除相同数据处理

支持(0) 反对(0) 舵手 | 园豆:150 (初学一级) | 2016-03-29 23:53
0

 你是要消除结果重复项?

jarrem | 园豆:202 (菜鸟二级) | 2016-03-29 21:33

第一种case的情况下做消除重复数据,第二case下不做任何消除处理

支持(0) 反对(0) 舵手 | 园豆:150 (初学一级) | 2016-03-29 23:54
0

select t1.colunm from

(select colunm , row_number() as RowNum from table ) as t1 left join 

(select colunm , row_number() as RowNum + 1 from table ) as t2  on t1.RowNum  = t2.RowNum 

where t1.colunm != t2.colunm

 

你试试,大概就是这个思路,应该能实现

刘宏玺 | 园豆:14020 (专家六级) | 2016-03-29 23:21

明早上班时试试,先谢谢了。

支持(0) 反对(0) 舵手 | 园豆:150 (初学一级) | 2016-03-29 23:55
0
select distinct * from case1
union all
select * from case2

大概思路如上,把两次查询组合起来,第一次去重。去重的话,可以考虑用row_number()方式。

幻天芒 | 园豆:37175 (高人七级) | 2016-03-30 08:41
0

这样的操作建议写一个存储过程,或是先在程序里判断好再发出SQL查询

先判断表里的值是否一致,如果是直接取第一行,速度比其他语句快很多,直接select top 1 * from 表

如果不至则直接select * from 表

Rich.T | 园豆:3440 (老鸟四级) | 2016-03-30 10:19
0

select column  from table  group by column having count(*)>1

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2016-03-30 13:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册