从多个表中删除时,关系是不可识别

我有这两个表:

| User | |--------| | u_id* | | p_id | ← NULLABLE | Person | |--------| | p_id* |

简单地说:

一个User可以在不相关的人存在。

这个问题是:

我如何删除用户它的人,在同一个查询?

到目前为止,我有这样的:

DELETE `user`, `person` FROM `user` INNER JOIN `person` WHERE `user`.`p_id` = `person`.`p_id` AND `u_id` = 1000

和它的作品确定为关系到一个人的用户,但它不会删除用户,如果它不具有相关的人( p_id = NULL )。

所以,现在的问题是:

我怎么能与它一起的人删除一个用户,如果用户恰好是关系到一个人,在同一个查询?

--------------解决方案-------------

使用left join ,而不是

DELETE `user`, `person`
FROM `user`
LEFT JOIN `person` ON `user`.`p_id` = `person`.`p_id`
WHERE `u_id` = 1000

我想补充一个ON DELETE CASCADE你的外键的定义。 然后,只需删除该用户并不必担心孩子的行,因为他们将采取由级联删除照顾。 某些链接:

  • http://www.mysqltutorial.org/mysql-on-delete-cascade/
  • http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html
分类:MySQL的 时间:2012-03-20 人气:0
本文关键词: MySQL和SQL
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.359 (s). 9 q(s)