sql语句

不啃不舒服斯基 2013-12-29 12:18:39
oracle 10g:

假如表a中有个c字段,值可能是c1或c2,
如果有c2存在就取c2行的数据,没有就取c1行的数据。

sql怎么写,谢谢大家!
...全文
288 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 u013320461 的回复:
这帮人,太不靠谱了。字段是C,值是C1 C2 select * from t where C=decode(C,'C2','C2','C1')
谢谢,不过,依然不靠谱哦,,,哈哈!
duesouth2000 2014-03-26
  • 打赏
  • 举报
回复
你的意思不太清晰啊,是否这样:
c列值同时包含c1,c2时,只要c2部分?
那要先判断是否同时包含c1,c2记录。用个参数吧,或者子查询。
where c=case when (select count(distinct c) from t
where c=c1 or c=c2)=2 then c2
else (select distinct c from t
where c=c1 or c=c2) end
abin30 2014-03-23
  • 打赏
  • 举报
回复
看看这个呢
select * from t where c=(case when (select count(*) from t where c='c2')>0 then 'c2'  else 'c1' end);
WSZHAO_SELECT 2014-03-21
  • 打赏
  • 举报
回复

SQL> select * from test;

USERNAME                                             USERNUM
-------------------- ---------------------------------------
c1                   
c2                   
                                                           1

SQL> select decode(username,null,'c1','c2','c2','c1','c1'),usernum from test;

DECODE(USERNAME,NULL,'C1','C2'                                 USERNUM
------------------------------ ---------------------------------------
c1                             
c2                             
c1                                                                   1

u013320461 2013-12-30
  • 打赏
  • 举报
回复
这帮人,太不靠谱了。字段是C,值是C1 C2 select * from t where C=decode(C,'C2','C2','C1')
yun_feiyang 2013-12-30
  • 打赏
  • 举报
回复
SELECT * FROM A WHEN C='C1' OR C='C2'
yun_feiyang 2013-12-30
  • 打赏
  • 举报
回复
SELECT * FROM A WHEN C=(CASE WHEN C=C1 THEN C1 ELSE C2 END)
yun_feiyang 2013-12-30
  • 打赏
  • 举报
回复
SELECT *, CASE WHEN C = C1 THEN (C1) WHEN C = C2 THEN (C2) ELSE (C1) END C FROM A
  • 打赏
  • 举报
回复
引用 6 楼 zlloct 的回复:
[quote=引用 4 楼 derline 的回复:] [quote=引用 3 楼 zlloct 的回复:] [quote=引用 2 楼 derline 的回复:] [quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 derline 的回复:] oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t
[/quote]c1和c2是值,不是字段名[/quote] c2行和C1行如何理解,举出数据和你想要的结果[/quote] 举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?[/quote] select * from a where (c=c2 or c=c1 ) 就这样就行了,当判断OR(或)的表达式的时候,如果第一个表达式就不会再执行第二个表达式了[/quote]好像不是这样啊。。。试了,感觉跟不加括号一样
CT_LXL 2013-12-29
  • 打赏
  • 举报
回复
引用 4 楼 derline 的回复:
[quote=引用 3 楼 zlloct 的回复:] [quote=引用 2 楼 derline 的回复:] [quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 derline 的回复:] oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t
[/quote]c1和c2是值,不是字段名[/quote] c2行和C1行如何理解,举出数据和你想要的结果[/quote] 举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?[/quote] select * from a where (c=c2 or c=c1 ) 就这样就行了,当判断OR(或)的表达式的时候,如果第一个表达式就不会再执行第二个表达式了
大话EPM 2013-12-29
  • 打赏
  • 举报
回复
nvl(c2,c1)
  • 打赏
  • 举报
回复
引用 3 楼 zlloct 的回复:
[quote=引用 2 楼 derline 的回复:] [quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 derline 的回复:] oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t
[/quote]c1和c2是值,不是字段名[/quote] c2行和C1行如何理解,举出数据和你想要的结果[/quote] 举例:我想要select * from a where c=c2 or c=c1 ,如果c=c2成立,就不要再执行后边的 or c=c1了(实际上这是不可能的,or c=c1还会继续执行的),怎么写能实现类似的效果?
CT_LXL 2013-12-29
  • 打赏
  • 举报
回复
引用 2 楼 derline 的回复:
[quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 derline 的回复:] oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t
[/quote]c1和c2是值,不是字段名[/quote] c2行和C1行如何理解,举出数据和你想要的结果
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 derline 的回复:] oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t
[/quote]c1和c2是值,不是字段名
CT_LXL 2013-12-29
  • 打赏
  • 举报
回复
引用 楼主 derline 的回复:
oracle 10g: 假如表a中有个c字段,值可能是c1或c2, 如果有c2存在就取c2行的数据,没有就取c1行的数据。 sql怎么写,谢谢大家!
select decode(c2,null,c1,c2) from t

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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