首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单个值从mysql中的多个表中删除多行

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

Stack Overflow用户
提问于 2014-10-02 20:55:08
回答 2查看 633关注 0票数 2

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

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

代码语言:javascript
复制
    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

另外,一个特定的userid可能不会出现在所有的表中。

我根本不知道如何一次把它们全部删除。任何提示都会很感激,我看了一堆类似的问题,但没有找到一个正确的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-02 20:58:28

您希望创建一个外键约束,并指定"ON级联“。对于每个具有用户外键的表,您都需要这样做。例如,

代码语言:javascript
复制
ALTER TABLE user_image
ADD CONSTRAINT fk_user_image_user FOREIGN KEY (user)
    REFERENCES user(id)
    ON DELETE CASCADE;
票数 3
EN

Stack Overflow用户

发布于 2014-10-02 20:59:45

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

代码语言:javascript
复制
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

演示

但是,如果使用外键约束将表与ON DELETE CASCADE关联起来,则只需从user表中删除行,所有相关行都将被删除。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26169504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档