繁体   English   中英

使用单个值从mysql中的多个表中删除多行

[英]Delete multiple rows from multiple tables in mysql using single value

我有许多具有不同表结构的mysql表,它们都有以下表名和字段名(左边的是表名,右边的是字段名)

我希望能够在单个查询中使用单个变量(例如,$ id = somename)删除行的值

    user  id,
    user_image  user
    user_interest  user 
    user_lang  id 
    user_login  user
    user_personal  user
    user_prefer user
    user_reviewuser
    user_role user_id
    user_translang  user
    user_translate  user
    user_web  id

同样,特定的用户标识可能不会在所有表中都出现。

我完全不确定如何一次删除它们。 任何提示将不胜感激,我看着类似的问题,但找不到正确的答案。

您要创建外键约束 ,并指定“ ON DELETE CASCADE”。 您需要为每个具有用户外键的表使用此功能。 例如,

ALTER TABLE user_image
ADD CONSTRAINT fk_user_image_user FOREIGN KEY (user)
    REFERENCES user(id)
    ON DELETE CASCADE;

您可以使用多表DELETE语法。 如果任何相关表没有相应的行,则需要使用LEFT JOIN

DELETE user, user_image, user_interest, ...
FROM user
LEFT JOIN user_image ON user.id = user_image.user
LEFT JOIN user_interest ON user.id = user_interest.user
...
WHERE user.id = $id

DEMO

但是,如果使用外键约束将表相关联,则可以使用ON DELETE CASCADE删除user表中的行,所有相关行将被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM