mysql删除所有带连接的行

时间:2015-02-06 16:41:27

标签: mysql database join

我有两张桌子:

表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所以我不能在删除时使用cascade。我需要做的是删除两个表中具有匹配ID的所有记录,其中table2.data_key = "email"和该记录的{_}} {_ 1}}。因此,在这种情况下,table1 row1将与UserID 1中的表2中的所有行一起删除。到目前为止,我的所有尝试都失败了。我怎么能做到这一点,谢谢!

我的最新尝试(我理解为什么它不起作用,但如何修复我迷失了):

LIKE "%@test.com%"

1 个答案:

答案 0 :(得分:1)

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

但是,当你说"我没有使用innodb时,我不确定你是什么意思所以我不能在删除时使用cascade。" ON DELETE CASCADE是标准SQL的一个特性,而不是innodb的一个特殊功能,所以除非你使用RDBMS的一些完全蹩脚的借口,否则你应该可以ON DELETE CASCADE就好了。