Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 嵌套的左联接查询不工作_Mysql_Sql - Fatal编程技术网

Mysql 嵌套的左联接查询不工作

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

我正在尝试左加入一个查询,但该查询失败,并显示以下消息:

“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 
          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
别名在哪里?即使修复了“未知列”问题,此查询也没有意义。你的目标是什么?