问个sql语句
一个表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




