mysql用join删除所有行

标签 mysql database join

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

相关文章:

python - 我无法使用 pyodbc 从 MySQL 正确打印字符

mysql - 选择查询加入一个表

php - 无法从 $this->db->last_query(); 得到结果;代码点火器

mysql - 如何计算投票分数为零或正面的帖子数量?

java - Mysql占用更多RAM空间并逐渐增加,没有任何下降

mysql - 可视化 MySQL 工作台错误 : 1452 foreign key constraint fails?

database - Postgresql 数据库的文件存储系统

mysql - 创建触发器与 View

php - mysql_query如何显示if条件的html

join - 确定 Hive 的分桶连接的 #Buckets