我有 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/