我有两个名为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
)
所有单个部分似乎都在工作,除非我包含“不存在”条款,有人可以帮助我吗?
答案 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`
)