我可以很容易地从product表中搜索icecat_cache中的单个值
SELECT * FROM `icecat_cache` WHERE `ident` LIKE '%FAN8X25TX3L%' 然后将其删除
但是我不知道如何找到产品表中不存在的值,并将它们从icecat_cache中删除。
icecat_cache表如下所示
ident | status
----------------------------------------------
StarTech.com_FAN8X25TX3L | 1
--------------------------------------------------
hp_Fr4567 | 1
-------------------------------------------------
samsung_d345674 | 1
-------------------------------------------------
hp_ser345 | 1
------------------------------------------------
toshiba_dff345 | 1
------------------------------------------------
hp_se3453 | 1
------------------------------------------------Product表看起来像这样
id | model |stock
-----------------------
1 | Fr4567 |Y
-----------------------
2 | se3453 |Y
--------------------
3 |FAN8X25TX3L |Y正如您从上面的示例中看到的那样,d345674、dff345和ser345不存在于产品表中。目前,icecat_cache有超过500k的条目,而products表只有180k。
删除它们的最佳方法是什么?
发布于 2018-11-01 22:28:17
Left Join。将icecat_cache视为最左侧的表,因为您希望考虑其中的所有行。LIKE %..%规则。Product表中没有匹配条目的那些行,通过在D16子句中仅指定其名称/别名,使用可以从D15表中删除。H217F218尝试执行以下查询:
DELETE
ic
FROM icecat_cache AS ic
LEFT JOIN Product AS p ON ic.ident LIKE CONCAT('%',p.model,'%')
WHERE p.model IS NULL https://stackoverflow.com/questions/53103267
复制相似问题