簡體   English   中英

有條件地從不同的表中選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM