gpt4 book ai didi

mysql用join删除所有行

转载 作者:搜寻专家 更新时间:2023-10-30 23:46:02 24 4
gpt4 key购买 nike

我有 2 个表:

表 1 每个用户有 1 行:

ID   startDate   EndDate
1 09-08-2015 09-08-2015
2 09-08-2015 09-08-2015

第二个表包含每个用户的多条记录:

ID   UserID  data_key   data_val
1 1 "email" "anything@test.com"
2 1 "name" "John Brown"
3 2 "email" "anything2@gmail.com"
4 2 "name" "Tom Brady"

我没有使用 innodb,所以我不能在删除时使用级联。我需要做的是从两个表中删除具有匹配 ID 的所有记录,其中 table2.data_key = "email" 和该记录的 data_valLIKE "%@test.com%"。因此,在这种情况下,table1 row1 将与表 2 中 UserID 1 的所有行一起被删除。到目前为止,我的所有尝试都失败了。我怎样才能做到这一点,谢谢!!!

我最近的尝试(我明白为什么它不起作用,但我迷路了如何解决):

delete 
table1, table2.*
from table1
INNER JOIN table2
ON table1.ID = table2.User_ID
WHERE table2.data_key = 'email'
AND table2.data_val LIKE '%stringofinterest%'
AND table1.ID = table2.User_ID

最佳答案

您不能同时从两个表中删除行。您必须先从一个表中删除行,然后再从另一个表中删除行。

但是,当您说“我没有使用 innodb,所以我不能在删除时使用级联”时,我不确定您的意思。 ON DELETE CASCADE 是标准 SQL 的一项功能,而不是 innodb 的特殊功能,因此除非您对 RDBMS 使用一些完全蹩脚的借口,否则您应该能够执行 ON DELETE CASCADE 很好。

关于mysql用join删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370581/

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