sql - MySQL: LEFT JOIN.. 从表 1 中选择全部,即使表 2 中没有?

标签 sql mysql left-join

我正在加入几张 table 进行选择

如果在第 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 查询中的 WHERE prod_drop.prod_drop_name = "Carat Weight" 子句。但是有没有办法在上面的查询中提取我需要的东西,但仍然从第一个(最左边的 cart_product)表中提取所有内容,即使其他表中没有匹配项?

谢谢!!

最佳答案

如果右边没有匹配prod_drop.prod_drop_name将为null

添加 OR prod_drop.prod_drop_name IS NULL 应该可以解决您的问题。

关于sql - MySQL: LEFT JOIN.. 从表 1 中选择全部,即使表 2 中没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602823/

相关文章:

sql - T-SQL 的表级差异和同步过程

mysql - 将表 1 中的 2 列连接到表 2

jpa - JPQL left outer join 多对多关系

MySQL 0 输入 ("Some", "Set")

Mysql join tables 并将一个表中的area_id替换为另一个表中的area_name

php - 按子查询计数排序

php - Laravel 在电子邮件确认 View 不起作用后立即更改密码

JPA 实体图 : which join types?

sql - Access/SQL - 我的 LIKE 语句不起作用,我迫切需要知道原因

php - 无法从 Laravel 连接到 MySQL 数据库,即使我创建了所需的用户