我想编写一个SQL查询来显示匹配的行(如果存在),否则显示所有记录。
实施例: - 输入数据: -
id
1
2
3
4
select * from table where id = 2 /* since id exits it should return id o/p 2 */
select * from table where id = 8/* since id doesn't exist it should return all the rows of table)
即。 O / P
1
2
3
4
我想在SQL中严格执行此操作,不需要PL / SQL或任何编程块
答案 0 :(得分:5)
select *
from table
where not exists (select id from table where id = 2) or id = 2
如果子查询没有返回任何记录,则表中所有记录的第一个条件为true,查询将返回所有记录。否则它是假的,我们只返回第二个条件为真的记录,即id = 2
答案 1 :(得分:1)
请尝试:
select
*
from
table
where
id=nvl((select id from table where id=2), id)