SELECT * FROM T WHERE AGE= 变量年岁
要求:用变量年岁=20 检索不到数据时就用3变量年岁=30 来检索
这个SQL怎样写成一条语句?
谢谢了!

解决方案 »

  1.   

    SELECT * FROM (SELECT * FROM T WHERE AGE IN (20,30) ORDER BY AGE ASC) WHERE ROWNUM<=1
      

  2.   

    SELECT * FROM T WHERE AGE= 20
    union all 
    SELECT * FROM T WHERE AGE= 30
    where not exists (SELECT * FROM T WHERE AGE= 20)
      

  3.   

    或者这样:SELECT * FROM (SELECT t.*,dense_rank() over(order by age) dr FROM T WHERE AGE IN (20,30)) WHERE dr = 1
      

  4.   

    楼主说的是检索不到age = 20 的数据时再检索age = 30,如果age在20和30都有数据的话,那么就只取 age = 20 的数据,用IN('20','30')符合要求吗?
      

  5.   

    select * from user where age=20
    or(age=30 and not exists(
    select 1 from wang where age=20))
    不知道是不是 你想要的结果