[英]conditionally select from different tables
我有兩個存儲材料的表:
Table ProductsA
ID | Description | Date
-----------------------------
1 | Apple Iphone | 01.03.2019
Table ProductsB
ID | Description | Date
-------------------------------
1 | Apple Iphone | 20.03.2019
2 | Samsung Galaxy | 20.03.2019
3 | Dell Laptop | 20.03.2019
如果對ProductsA的第一個查詢未返回任何內容,我想從ProductsB返回結果。 例如,我想退回日期大於05.03.2019的產品。
我試過了:
SELECT COALESCE(A.ID, B.ID) as ID,
COALESCE(A.Description, B.Description) as Description
FROM ProductsA as A
INNER JOIN ProductsB as B on B.ID = A.ID
WHERE A.Date >= 05.03.2019
但這不是真的。 如果A返回空值,則沒有任何連接。 我該如何實現?
編輯:我希望當且僅當從ProductsA中找不到任何東西時,才從ProductsA和ProductsB返回值。 遵循相同的推理,我希望得到此結果(查詢日期晚於05.03.2019的產品):
ID | Description | Date
-------------------------------
1 | Apple Iphone | 20.03.2019
2 | Samsung Galaxy | 20.03.2019
3 | Dell Laptop | 20.03.2019
Edit2:但是,對於日期大於等於01.03.2019的結果,我應該只返回:
ID | Description | Date
-----------------------------
1 | Apple Iphone | 01.03.2019
您可以這樣使用UNION:
SELECT A.ID,
A.Description
FROM ProductsA AS A
WHERE A.Date >= '2019.03.05'
UNION ALL
SELECT B.ID,
B.Description
FROM ProductsB AS B
WHERE B.Date >= '2019.03.05'
AND NOT EXISTS ( SELECT 1 FROM ProductsA AS A2 WHERE A2.Date >= '2019.03.05' );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.