思路

利用只有一行的表左關聯或有關聯強制生成一條null記錄

select 需要查詢的數據
from 只有一行的表
left join 查詢的表
on 1=1;

  

各數據庫獲取只有一行的表的方法

  • mysql
select 1;
  • oracle
dual

  

實例

編寫一個 SQL 查詢,獲取 person 表中age為30的id,如果不存在age為30,那么查詢應返回 null 。

id age
1 20
  • mysql
select t2.id
from ( select 1) t1
left join (
select id 
from person
where 
age = 30) t2
on 1 = 1;

  

  • oracle
select t1.id
from dual
left join (
select id 
from person
where 
age = 30) t1
on 1 = 1;