CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

问个sql语句

楼主tomuno(特别行动组)2005-11-20 14:05:40 在 Oracle / 基础和管理 提问

一个表table两个字段id,name  
  id             name  
  1               a    
  2               b    
  3               c    
  12345       d  
   
  现在想取一个id=123456789的数据,但不知道表中有没有这条记录,  
  如果没有,则认为他和id=1的name一样,如果有,则取出他的name  
   
  这条sql如何写? 问题点数:30、回复次数:5Top

1 楼hua830619(花花)回复于 2005-11-20 17:21:19 得分 6

Declare  
            tempid   table.id%type   :=   123456789;  
            Tempname   table.name%type   :=   'Temp';  
  Begin  
            select   name   into   tempname     from   table   where   id   =   tempid   ;  
            if   Tempname   =   'temp'   then    
                  tempid   :=   1;  
            else    
            end   if  
            select   name   from   table   where   id   =   tempid;    
            commit;  
  End;  
  Top

2 楼hua830619(花花)回复于 2005-11-20 17:48:17 得分 6

上面的修改一下  
  Declare  
  tempid   table.id%type   :=   123456789;  
  Tempname   table.name%type;  
  Begin  
  select   name   into   tempname   from   table   where   id   =   tempid   ;  
  if   Tempname   =   ''   then  
  tempid   :=   1;  
  else  
  end   if  
  select   name   from   table   where   id   =   tempid;  
  commit;  
  End;Top

3 楼hevin(没有什么是不可能的)回复于 2005-11-20 17:49:25 得分 6

select   name    
  from   table  
  where   id   =   when   exists(select   1   from   table   where   id   =   and   rownum   <2   )   then     123456789   else   1   endTop

4 楼Alkeen()回复于 2005-11-21 09:14:40 得分 6

SELECT   NAME   FROM   TABLE  
    WHERE   (1   <=   (SELECT   COUNT(*)   FROM   TABLE   WHERE   ID   =   '123456789')  
                  AND   ID   =   '123456789')  
          OR   (0     =   (SELECT   COUNT(*)   FROM   TABLE   WHERE   ID   =   '123456789')  
                  AND   ID   =   '1')  
   
  其中上述语句中有三处用到的ID   =   '123456789'   可换成参数,用你想查的id号替换。Top

5 楼wgsasd311(自强不息)回复于 2005-11-21 13:27:25 得分 6

--try  
  select   name    
  from   table  
  where   id   =case   when   exists(select   1   from   table   where   id   =   and   rownum   <2   )   then     123456789   else   1   endTop

相关问题

  • 问个SQL语句。
  • 问个SQL语句?
  • 问个SQL语句
  • 问个sql语句
  • 问个SQL语句
  • 一个sql语句问题
  • 问一个SQL语句
  • 请问一个SQL语句
  • 一个SQL语句问题
  • 问一个sql语句

关键词

  • tempid
  • tempname
  • from table where
  • table
  • select
  • type

得分解答快速导航

  • 帖主:tomuno
  • hua830619
  • hua830619
  • hevin
  • Alkeen
  • wgsasd311

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo