簡體   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