簡體   English   中英

使用內部聯接刪除不起作用

[英]Delete with inner join is not working

我正在從多個表格中刪除與游戲ID相對應的游戲。

這是我正在使用的查詢

$sql = DELETE `tb_games`, `tb_game_over`, `tb_game_round_record` FROM `tb_games`";
$sql .= " INNER JOIN `tb_game_over` ON `tb_games`.`game_id` = `tb_game_over`.`game_id`";
$sql .= " INNER JOIN `tb_game_round_record` ON `tb_games`.`game_id` = `tb_game_round_record`.`game_id`";
$sql .= " WHERE `tb_games`.`game_id` = ?";

如果game_id位於所有三個表中,則此查詢有效,但如果game id僅位於tb_games表中,則該查詢不起作用。 如何解決此問題? 還是我需要編寫三個不同的查詢才能從所有三個表中刪除?

您可以通過使tb_game_over和tb_game_round_record外鍵中的game_id列指向tb_games.game_id並包含“ on delete Cascade”子句來消除在DML中執行此操作的需要。 然后,您的delete語句將如下所示:

delete from tb_games where game_id=?

只是你可以做喜歡

DELETE FROM tb_games WHERE game_id IN (
SELECT game_id FROM tb_game_over
UNION ALL
SELECT game_id FROM tb_game_round_record
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM