oracle数据库中比较一个相同表中的两行数据中的不同列,并且把不同的列显示出来
表A中有行a,行b,行a和行b中可能有些列的值不一样,想把这些不一样的值显示出来。如果全一样的话,就什么都不显示。sql怎么写啊急求...
表A中有行a,行b,行a和行b中可能有些列的值不一样,想把这些不一样的值显示出来。如果全一样的话,就什么都不显示。sql怎么写啊急求
展开
展开全部
select a from A a1 where not exists (select 1 from table where A a2 where a1.a=a2.b)
union
select b from A a1 where not exists (select 1 from table where A a2 where a1.b=a2.a)
追答
一般应该不会有这种题目把。。想想都觉得很坑爹。。。
declare
a number;
b number;
c number;
d varchar2(100):=null;
begin
select count(distinct column1) ,count(distinct column2) ,count(distinct column3) into a,b,c from table;
if a=1 and b=1 and c=1 then d:='null';
if a >1 then d:=d||'column1';
if b >1 then d:=d||'column2';
if c >1 then d:=d||'column3';
dbms_output.put_line('select '||d|| ' from table');
end;
这是输出查询语句的。。思路是先统计各列有多少个不同的值,然后输出来。
我感觉这应该是你自己想的题目,很坑。。
要最终结果的话,用存储过程,执行那个输出的语句,返回到一个游标里面就可以看到结果了。
太恶心了。懒得写了。。。
展开全部
你这个难道只比较两行么?
如果4条纪录,两两相同,你显示什么。
数据库不是表格,行没有名字,只有列(column)有列名
如果4条纪录,两两相同,你显示什么。
数据库不是表格,行没有名字,只有列(column)有列名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
with t as(
select 'a' a,'b' b,'c' c from dual
union all
select 'a' a,'b1' b,'c' c from dual)
select
case when count(distinct a) over()=count(a) over() then a else '' end||
case when count(distinct b) over()=count(b) over() then b else '' end||
case when count(distinct c) over()=count(c) over() then c else '' end as res
from t
select 'a' a,'b' b,'c' c from dual
union all
select 'a' a,'b1' b,'c' c from dual)
select
case when count(distinct a) over()=count(a) over() then a else '' end||
case when count(distinct b) over()=count(b) over() then b else '' end||
case when count(distinct c) over()=count(c) over() then c else '' end as res
from t
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询