根据MySQL中的条件删除所有行

时间:2014-06-25 15:10:03

标签: php mysql sql

我想根据条件删除行。让我详细解释一下,

表1

 -----------------
| t1id | t1detail |
|---------------  |
|  1   |  iii     |
|  2   |  jjj     |
|  3   |  iik     |
|  4   |  jjk     |
 -----------------

表2

 ------------------------
| t2id | t1id | t1detail |
|----------------------- |
|  1   |   1  | iii      |
|  2   |   1  | jja      |
|  3   |   3  | iib      |
|  4   |   1  | jjc      |
|  5   |   2  | iid      |
|  6   |   3  | jje      |
|  7   |   4  | iif      |
|  8   |   2  | jjg      |
|  9   |   3  | iih      |
|  10  |   4  | jj3      |
 ------------------------

现在我需要在table2中同时删除table1 id(t1id),应删除从tablet1分配的所有id。

例如,假设我需要删除t1id = 1的意思,它应该从table1和table2删除

表1中的

 1   |  iii 
表2中的

1   |   1  | iii
2   |   1  | jja
4   |   1  | jjc

应该删除。请建议我在mysql中进行操作

我试过

    $query = "DELETE FROM table1 INNER JOIN table2 ON table1.t1id = table2.t1id  WHERE  table1.t1id = {$id};
    $result = mysql_query($query, $connection);

但未成功

1 个答案:

答案 0 :(得分:1)

我会假设您没有设置外键(可能使用MyISAM存储?)。如果是这种情况,则需要在查询中指定要删除的两个表。

DELETE table1, table2
FROM table1
JOIN table2
ON table1.t1id = table2.t1id
WHERE table1.t1id = {$id}

如果你设置了外键,你可以使用级联删除,这也可以解决你的问题。