[英]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... |
----------------------------------------------
我想選擇itemName
, itemPrice
, itemCode
使用等join
兩個表。
到現在為止還挺好; 但是,在ORDER
表中可能不存在與CATALOG
給定itemID
對應的行。 在這種情況下,我想itemCode
第一個表CATALOG
itemName
和itemCode
。
是否可以在單個(復合)語句中使用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.