MySQL Multiple LEFT JOIN with WHERE clause



这是我为连接TWO表而编写的MySQL代码,它成功地生成了我想要的新表:

SELECT 
*
FROM MarketingDb.ListingProduct ListingProduct
LEFT JOIN ErpDb.ProductListingDetail ProductListingDetail
ON ListingProduct.ProductListingId = ProductListingDetail.ProductId
WHERE ProductListingDetail.ComponentType = "S" 
LIMIT 10;

由于我实际上想加入THREE表,因此我在上面的SQL中添加了两行新代码;上面的WHERE子句是必需的b4我加入第三个表。

SELECT 
*
FROM MarketingDb.ListingProduct ListingProduct
LEFT JOIN ErpDb.ProductListingDetail ProductListingDetail
ON ListingProduct.ProductListingId = ProductListingDetail.ProductId
WHERE ProductListingDetail.ComponentType = "S" 

LEFT JOIN ErpDb.Product Product
ON Product.SKU = ProductListingDetail.ProductListingId
LIMIT 10;

但这次它失败了,错误提示说我有2行新代码的SQL语法错误。有人能帮我找出错误来解决问题吗?Thx!

因为Where子句必须在from子句之后,并且您将bolng全部联接到查询的from部分

制作SELECT *可以让你陷入困境,所以你可以指定你真正需要的列

SELECT 
*
FROM MarketingDb.ListingProduct ListingProduct
LEFT JOIN ErpDb.ProductListingDetail ProductListingDetail
ON ListingProduct.ProductListingId = ProductListingDetail.ProductId
LEFT JOIN ErpDb.Product Product
ON Product.SKU = ProductListingDetail.ProductListingId
WHERE ProductListingDetail.ComponentType = "S"
LIMIT 10;

最新更新