我有兩個查詢query1和query2。我想要做的是,如果query1的返回行爲空,則返回query2。這是可能使用基本的SQL查詢單獨?他們有相同的返回列順便說一句,但不同的表源。選擇將使用哪個查詢/ Oracle中的條件查詢
如:
QUERY1:
SELECT name, message
FROM table1
QUERY2:
SELECT name, message
FROM table 2
如果QUERY1是空的,從QUERY2返回名稱,消息。
我有兩個查詢query1和query2。我想要做的是,如果query1的返回行爲空,則返回query2。這是可能使用基本的SQL查詢單獨?他們有相同的返回列順便說一句,但不同的表源。選擇將使用哪個查詢/ Oracle中的條件查詢
如:
QUERY1:
SELECT name, message
FROM table1
QUERY2:
SELECT name, message
FROM table 2
如果QUERY1是空的,從QUERY2返回名稱,消息。
這會從表1,如果不是空的選擇,從表2否則選擇:
SELECT * FROM table1
WHERE EXISTS (select * from table1)
UNION ALL
SELECT * FROM table2
WHERE NOT EXISTS (select * from table1)
此檢查表1有沒有行:
EXISTS (SELECT * FROM TABLE)
這也適用。謝謝! – superigno
你應該使用'union all',因爲這會快一點 –
找到答案在這裏:https://stackoverflow.com/a/25122516/3747493
基本上:
SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
WHERE (SELECT COUNT(*) FROM table1) = 0
謝謝你們!
@supergino你能解釋一下你想要做的更詳細一點。如果在table1中有一行,而在表2中只有100行,那麼您只需要table1中的1行。只有當table1爲空時,你想從表2中選擇 – EoinS