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

我纯洁全身都纯洁 2014-01-08 10:52:00
如题 100分送上!
万分感谢
...全文
761 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿三 2014-01-14
  • 打赏
  • 举报
回复
我也来一个:

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
luoyoumou 2014-01-10
  • 打赏
  • 举报
回复
-- 想问题太肤浅,请看下面两个语句的结果: select 'abc'||null from dual; select null||'abc' from dual; -- 也就是说当“A字段为'abc',b字段为 NULL的时候”,不应该与当“A字段为NULL,b字段为'abc'”的时候相等
luoyoumou 2014-01-10
  • 打赏
  • 举报
回复
为什么要去这样想? A||B唯一 能够推导出:A、B两个字段能够唯一确定一条记录,那么 A、B分组,去count(*)不就得了: group by a, b having count(*)>1; 猪!
蚯蚓哥 2014-01-10
  • 打赏
  • 举报
回复
引用 3 楼 shenlele088 的回复:
DISTINCT后,还怎么判断唯一呢? 这种问题不应该用group by吗? select a||b ,count(*) from tab group by a||b --having count(*)>1 ---not unique
这是神一样的人物,佩服佩服
北京不不 2014-01-10
  • 打赏
  • 举报
回复
本机没有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 时。。。
北京不不 2014-01-10
  • 打赏
  • 举报
回复
引用 12 楼 luoyoumou 的回复:
-- 想问题太肤浅,请看下面两个语句的结果: 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 是唯一的
_拙计 2014-01-10
  • 打赏
  • 举报
回复
.....group by a,b having count(1)>1;不就好了e
我爱荤菜 2014-01-09
  • 打赏
  • 举报
回复
select user_id,qrbz,count(*) as cou
from askforleave
group by user_id,qrbz
having count(*)>1;
我爱荤菜 2014-01-09
  • 打赏
  • 举报
回复
select user_id||qrbz ,count(*)
 from askforleave
 group by user_id||qrbz
 having count(*)>1;
我爱荤菜 2014-01-09
  • 打赏
  • 举报
回复
3楼,四楼,都可以,思路是一样的,别争了
Yole 2014-01-09
  • 打赏
  • 举报
回复

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

善若止水 2014-01-09
  • 打赏
  • 举报
回复
支持3楼的,必须用group by 和 having count(1)>1
CT_LXL 2014-01-08
  • 打赏
  • 举报
回复
SELECT A,B,COUNT(*) FROM T GROUP BY A,B
shenlele088 2014-01-08
  • 打赏
  • 举报
回复
DISTINCT后,还怎么判断唯一呢? 这种问题不应该用group by吗? select a||b ,count(*) from tab group by a||b --having count(*)>1 ---not unique
  • 打赏
  • 举报
回复
想到一个放法 SELECT COUNT(DISTINCT (A.PRICE_PLAN_ID||'+'||+A.RE_ID)) A FROM IB_ONE_OFF_CHARGE_RULE 不知道有更好的没 不想在程序中处理
  • 打赏
  • 举报
回复
想到一个方法 SELECT COUNT(DISTINCT (A.PRICE_PLAN_ID||'+'||+A.RE_ID)) A FROM IB_ONE_OFF_CHARGE_RULE 先试试 不知道还有更好的没 不想再java或者js中处理

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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