簡體   English   中英

MYSQL根據值(如果存在)對SELECT行進行查詢,否則從另一個表返回數據

[英]MYSQL Query to SELECT row based on a value (if exists) otherwise return data from another table

我有兩個表:

CATALOG:
------------------------------------
| itemID    | itemCode  | itemName |
------------------------------------

ORDER:
----------------------------------------------
| orderID   | itemID_FK | itemPrice | etc... |
----------------------------------------------

我想選擇itemNameitemPriceitemCode使用等join兩個表。

到現在為止還挺好; 但是,在ORDER表中可能不存在與CATALOG給定itemID對應的行。 在這種情況下,我想itemCode第一個表CATALOG itemNameitemCode

是否可以在單個(復合)語句中使用MYSQL?

編輯:這是一個示例表

CATALOG:
------------------------------------
| itemID    | itemCode  | itemName |
------------------------------------
|  1        |  89873232 | Oats     |
|  2        |  32849392 | Beer     |
------------------------------------

ORDER:
----------------------------------------------
| orderID   | itemID_FK | itemPrice | etc... |
----------------------------------------------
| 213232    |  2        |  3.99     |  ...   |
----------------------------------------------

我使用以下查詢來檢索有關項目的完整數據:

SELECT itemID, itemName, itemPrice FROM CATALOG
INNER JOIN ORDER
ON itemID = itemID_FK
WHERE itemID = %d

我需要此聯接,因為CATALOG將不包含從ORDER獲得的價格。 如果我使用itemID=1 ,那么ORDER表中將沒有相應的條目,查詢將失敗。 如果在ORDER沒有該項的條目,我希望它至少檢索itemName

只需在兩個表之間使用LEFT OUTER JOIN ,那么您將始終在JOIN的LEFT端擁有與該表相對應的數據:

SELECT C.itemName, C.itemCode, O.itemPrice, ...
FROM CATALOG as C
     LEFT OUTER JOIN ORDER AS O ON C.itemID = O.itemID_FK

如果CATALOG中的項目不存在於ORDERS ,則以上選擇中的所有O將變為NULL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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