簡體   English   中英

MySQL:LEFT JOIN ..即使表2中沒有,也從表1中選擇全部?

[英]MySQL: LEFT JOIN.. select all from table 1 even if not there in table 2?

我正在加入幾張桌子進行選擇

如果第2,第3,第4表中沒有任何匹配,只要第一個表匹配,我仍然想要拉結果。 我以為LEFT JOIN做到了這一點,但事實並非如此。

這是完整的查詢:

SELECT cart_product.*, prod_drop_products.prod_drop_product_name, everlon_sheet.*, cart_product.product_id AS product_id 
FROM cart_product 
LEFT JOIN everlon_sheet ON cart_product.product_id = everlon_sheet.product_id 
LEFT JOIN prod_drop_products ON cart_product.product_id = prod_drop_products.product_id 
LEFT JOIN prod_drop ON prod_drop.prod_drop_id = prod_drop_products.prod_drop_id 
WHERE prod_drop.prod_drop_name = "Carat Weight" AND cart_product.product_brand = "everlon" 
ORDER BY cart_product.product_manufacturer_num

結果是316結果

這是沒有連接的查詢:

SELECT cart_product.* 
FROM cart_product 
WHERE cart_product.product_brand = "everlon" 
ORDER BY cart_product.product_manufacturer_num

這得到了362個結果

由於我在JOIN qry中的WHERE prod_drop.prod_drop_name =“Carat Weight”子句,我發生了預感。 但有沒有辦法在上面的查詢中提取我需要的東西,但是仍然從第一個(最左邊的,cart_product)表中提取所有內容,即使其他表中沒有匹配項?

謝謝!!

如果右側沒有匹配項,則prod_drop.prod_drop_name將為null

添加OR prod_drop.prod_drop_name IS NULL應該可以解決您的問題。

嘗試

WHERE prod_drop.prod_drop_name = "Carat Weight" or prod_drop.prod_drop_name is null

更改

WHERE prod_drop.prod_drop_name = "Carat Weight" AND cart_product.product_brand = "everlon" 

WHERE (prod_drop.prod_drop_name = "Carat Weight" OR prod_drop.prod_drop_name IS NULL) AND cart_product.product_brand = "everlon" 

如果prod_drop中沒有匹配的值,查詢現在也將返回匹配。

暫無
暫無

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

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