gpt4 book ai didi

mysql - 删除并通过与另一个表匹配来查找记录mysql表

转载 作者:行者123 更新时间:2023-11-29 16:46:12 24 4
gpt4 key购买 nike

我可以使用

轻松地从产品表中搜索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
------------------------------------------------

产品表看起来像

id | model       |stock
-----------------------
1 | Fr4567 |Y
-----------------------
2 | se3453 |Y
--------------------
3 |FAN8X25TX3L |Y

正如您从上面的示例 d345674 中看到的,dff345 和 ser345 不存在于产品表中。目前,icecat_cache 有超过 50 万个项目,而 products 表只有 18 万个。

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

最佳答案

  • 在两个表之间执行Left Join。将 icecat_cache 视为最左侧的表,因为您想要考虑其中的所有行。
  • 在连接条件中,您可以指定 LIKE %..% 规则。
  • 现在,使用 Where Product.model IS NULL 仅考虑 Product 表中没有匹配条目的行
  • 您可以通过在 Delete 子句中仅指定其名称/别名,icecat_cache 表中删除。

尝试以下查询:

DELETE 
ic
FROM icecat_cache AS ic
LEFT JOIN Product AS p ON ic.ident LIKE CONCAT('%',p.model,'%')
WHERE p.model IS NULL

关于mysql - 删除并通过与另一个表匹配来查找记录mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com