首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求一条sql 一张表中有A B两个字段 判断A+B是不是唯一

2014-01-17 
求一条sql 一张表中有A B两个字段 判断A+B是否唯一。如题100分送上!万分感谢[解决办法]DISTINCT后,还怎么判

求一条sql 一张表中有A B两个字段 判断A+B是否唯一。
如题  100分送上!
万分感谢
[解决办法]
DISTINCT后,还怎么判断唯一呢?
这种问题不应该用group by吗?

select a
[解决办法]
b ,count(*)
from tab
group by a
[解决办法]
b
--having count(*)>1 ---not unique
[解决办法]
SELECT A,B,COUNT(*)
FROM T 
GROUP BY A,B

[解决办法]
支持3楼的,必须用group by 和 having count(1)>1
[解决办法]


select a,b,count(*) as cou
from [table] 
group by a,b
having count(*)>1


[解决办法]
3楼,四楼,都可以,思路是一样的,别争了
[解决办法]
select user_id
[解决办法]
qrbz ,count(*)
 from askforleave
 group by user_id
[解决办法]
qrbz
 having count(*)>1;

[解决办法]
select user_id,qrbz,count(*) as cou
from askforleave
group by user_id,qrbz
having count(*)>1;

[解决办法]
引用:
DISTINCT后,还怎么判断唯一呢?
这种问题不应该用group by吗?

select a
[解决办法]
b ,count(*)
from tab
group by a
[解决办法]
b
--having count(*)>1 ---not unique


这是神一样的人物,佩服佩服
[解决办法]
为什么要去这样想?

A
[解决办法]
B唯一 能够推导出:A、B两个字段能够唯一确定一条记录,那么
A、B分组,去count(*)不就得了:

group by a, b
having count(*)>1;

猪!
[解决办法]
-- 想问题太肤浅,请看下面两个语句的结果:
select 'abc'
[解决办法]
null from dual;
select null
[解决办法]
'abc' from dual;

-- 也就是说当“A字段为'abc',b字段为 NULL的时候”,不应该与当“A字段为NULL,b字段为'abc'”的时候相等

[解决办法]
.....group by a,b having count(1)>1;不就好了e
[解决办法]
引用:
-- 想问题太肤浅,请看下面两个语句的结果:
select 'abc'
[解决办法]
null from dual;
select null
[解决办法]
'abc' from dual;

-- 也就是说当“A字段为'abc',b字段为 NULL的时候”,不应该与当“A字段为NULL,b字段为'abc'”的时候相等


如果是  A:a  b:cde
       A:ac b:de
   这两种情况,按楼主的意思,是属于重复的,不唯一的。
   可按group by A,B 是唯一的
[解决办法]
本机没有Oracle 没法测试。
除了group by a
[解决办法]
b
另类点的,试试
用本表left jion 本表
select a.id,a.A
[解决办法]
a.B,b.id from test a left join b on a.A
[解决办法]
a.B=b.A
[解决办法]
b.B and a.id!=b.id 

那么当b.id为null 时。。。
[解决办法]
我也来一个:

create table tmp_zxf_01(A varchar2(10),B varchar2(10));
insert into tmp_zxf_01 values('A',null);
insert into tmp_zxf_01 values('A',null);
insert into tmp_zxf_01 values(null,'A');
insert into tmp_zxf_01 values('B',null);
insert into tmp_zxf_01 values(null,'B');
insert into tmp_zxf_01 values(null,'B');
insert into tmp_zxf_01 values('A','B');
insert into tmp_zxf_01 values('A','B');

select a,b
from (
select a,b,row_number()over(partition by a,b order by a) rid
from tmp_zxf_01
) where rid>1


热点排行