首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过与另一个表关联来删除和查找记录mysql表

通过与另一个表关联来删除和查找记录mysql表
EN

Stack Overflow用户
提问于 2018-11-01 22:25:19
回答 1查看 18关注 0票数 0

我可以很容易地从product表中搜索icecat_cache中的单个值

代码语言:javascript
复制
SELECT * FROM `icecat_cache` WHERE `ident` LIKE '%FAN8X25TX3L%' 

然后将其删除

但是我不知道如何找到产品表中不存在的值,并将它们从icecat_cache中删除。

icecat_cache表如下所示

代码语言:javascript
复制
     ident                          |  status
    ----------------------------------------------
        StarTech.com_FAN8X25TX3L    |    1
--------------------------------------------------
        hp_Fr4567                   |    1
-------------------------------------------------
        samsung_d345674             |    1
-------------------------------------------------
        hp_ser345                   |    1
------------------------------------------------
        toshiba_dff345              |    1
------------------------------------------------
        hp_se3453                   |    1
------------------------------------------------

Product表看起来像这样

代码语言:javascript
复制
id | model       |stock
-----------------------
1  | Fr4567      |Y
-----------------------
2  | se3453      |Y
 --------------------
3  |FAN8X25TX3L  |Y

正如您从上面的示例中看到的那样,d345674、dff345和ser345不存在于产品表中。目前,icecat_cache有超过500k的条目,而products表只有180k。

删除它们的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-11-01 22:28:17

  • 在两个表之间执行Left Join。将icecat_cache视为最左侧的表,因为您希望考虑其中的所有行。
  • 在联接条件中,您可以指定LIKE %..%规则。
  • 现在,只考虑Product表中没有匹配条目的那些行,通过在D16子句中仅指定其名称/别名,使用可以从D15表中删除。H217F218

尝试执行以下查询:

代码语言:javascript
复制
DELETE 
  ic
FROM icecat_cache AS ic 
LEFT JOIN Product AS p ON ic.ident LIKE CONCAT('%',p.model,'%')
WHERE p.model IS NULL 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53103267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档