1

我有 2 个要组合的 sql 字符串:

  • 第一个表包含产品的所有数据
  • 第二个表 ( inner join) 包含具有组价的产品的所有数据。

但我得到不同的结果

测试搜索“sku”

SELECT sku
FROM  `c3eiwitlive`.`catalog_product_entity` 
WHERE (
 `entity_id` LIKE  '%17086%'
)

group_price直接上表sql

结果 269 条记录

SELECT SKU, value
FROM  `c3eiwitlive`.`catalog_product_entity_group_price` AS T1
INNER JOIN
`c3eiwitlive`.`catalog_product_entity` AS T2 
ON T1.`entity_id` = T2.`entity_id`;

合并的sql返回较少的记录

结果 234 条记录

SELECT name
FROM  `c3eiwitlive`.`catalog_product_flat_1` AS T1
WHERE T1.`sku` 
IN (
    SELECT sku
    FROM  `c3eiwitlive`.`catalog_product_entity_group_price` AS T1
    INNER JOIN  `c3eiwitlive`.`catalog_product_entity` AS T2 ON T1.`entity_id` = T2.`entity_id`
)
4

1 回答 1

0

在我看来,“catalog_product_flat_1”表中缺少一些 sku 条目。为什么不反转查询以识别丢失的行?

SELECT sku
FROM  `c3eiwitlive`.`catalog_product_entity_group_price` AS T1
INNER JOIN  `c3eiwitlive`.`catalog_product_entity` AS T2 ON T1.`entity_id` = T2.`entity_id`
WHERE sku 
NOT IN (
      SELECT sku from `c3eiwitlive`.`catalog_product_flat_1`
)
于 2013-10-30T14:56:55.933 回答