Mysql 嵌套的左联接查询不工作
我正在尝试左加入一个查询,但该查询失败,并显示以下消息: “on子句”中的未知列“卖方产品。卖方产品id” 以下是查询:Mysql 嵌套的左联接查询不工作,mysql,sql,Mysql,Sql,我正在尝试左加入一个查询,但该查询失败,并显示以下消息: “on子句”中的未知列“卖方产品。卖方产品id” 以下是查询: SELECT sp.seller_product_id FROM seller_product LEFT JOIN ( SELECT spov.seller_product_id FROM seller_product_option_value spov WHERE spov.active = 1
SELECT sp.seller_product_id FROM seller_product
LEFT JOIN (
SELECT spov.seller_product_id
FROM seller_product_option_value spov
WHERE spov.active = 1
AND spov.seller_product_id IN ( 2567 ) ) AS option_query
ON seller_product.seller_product_id = option_query.spov.seller_product_id
您需要为表添加别名,请尝试以下操作:
SELECT sp.seller_product_id FROM seller_product sp
LEFT JOIN (
SELECT spov.seller_product_id
FROM seller_product_option_value spov
WHERE spov.active = 1
AND spov.seller_product_id IN ( 2567 ) ) AS option_query
ON sp.seller_product_id = option_query.spov.seller_product_id
不要嵌套左连接。您可以在
ON
子句中进行筛选:
SELECT sp.seller_product_id
FROM seller_product sp LEFT JOIN
seller_product_option_value spov
ON sp.seller_product_id = spov.seller_product_id AND
spov.active = 1 AND
spov.seller_product_id IN ( 2567 );
在MySQL中,避免使用
FROM
子句中的子查询尤其重要,因为它具体化了子查询。这增加了开销,并且排除了对联接使用索引,查询中定义的sp
别名在哪里?即使修复了“未知列”问题,此查询也没有意义。你的目标是什么?