SQL不存在不起作用

时间:2016-02-09 18:13:50

标签: mysql sql

我有两个名为TEMPDATA和Product的表。我将所有数据从csv feed转储到TEMPDATA中,然后将其组织到相应的表中,Product就是其中之一。

我正在尝试将没有重复'ean'数字的TEMPDATA的所有内容插入到Product中,前提是它不存在于Product中。

我想要使用的查询是......

INSERT IGNORE INTO `Product` (`product_ean`, `product_name`, `product_description`, `product_image`, `product_thumbnail`, `product_category`) 
SELECT `ean`, `product_name`, `description`, `merchant_image_url`, `aw_thumb_url`, `merchant_category` 
FROM (
    SELECT `ean`, `product_name`, `description`, `merchant_image_url`, `aw_thumb_url`, `merchant_category`, count( * ) 
    FROM TEMPDATA
    GROUP BY `ean`
    HAVING count( * ) = 1
) AS t
WHERE NOT EXISTS (
    SELECT `product_ean` FROM Product
)

所有单个部分似乎都在工作,除非我包含“不存在”条款,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

WHERE A.product_ean = t.product_name
你错过了这个:

.gradle
NOT EXIST语句中的

答案 1 :(得分:1)

你需要让你包括要搜索的where子句,见下文

    INSERT IGNORE INTO `Product` (`product_ean`, `product_name`, `product_description`, `product_image`, `product_thumbnail`, `product_category`) 
SELECT `ean`, `product_name`, `description`, `merchant_image_url`, `aw_thumb_url`, `merchant_category` 
FROM (
    SELECT `ean`, `product_name`, `description`, `merchant_image_url`, `aw_thumb_url`, `merchant_category`, count( * ) 
    FROM TEMPDATA
    GROUP BY `ean`
    HAVING count( * ) = 1
) AS t
WHERE NOT EXISTS (
    SELECT `product_ean` FROM Product P where t.ean = p.`product_ean`
)