繁体   English   中英

试图从INNER JOIN(通过PHP通过MYSQL)中删除,那么在联接表中有我想要取消的值?

[英]Trying to DELETE from INNER JOIN (MYSQL via PHP) WHERE the joined table has the value I want to key off?

我在MYSQL中有两个表:

Encounters  
+----+--------+------------+
| Id | GameId | LocationId |
+----+--------+------------+
| 1  | 5      |     10     |
| 2  | 5      |     12     |
| 3  | 5      |     45     |
+----+--------+------------+
EncounterCards  
+----+-------------+--------+
| Id | EncounterId | CardId |
+----+-------------+--------+
|  6 | 1           | 26     |
|  7 | 2           |  5     |
|  8 | 3           |  5     |
+----+-------------+--------+

我试图加入两个表并删除其中GameId = 5EncounterCards表中的所有记录。 当我进行内部GameId ,似乎并没有让我这样做,因为它是在EncounterCards表中查找GameId列,但仅在Encounters表中。

因此,在此用例中,它将从EncounterCards表中删除所有记录。

这是我的查询:

`$query = "DELETE FROM EncounterCards INNER JOIN Encounters ON Encounters.Id = EncounterCards.EncounterId WHERE Encounters.GameId = {$game_id}";`

如果在您的情况下使用INNER JOIN 那么重要,则还可以使用以下方法:

DELETE FROM EncounterCards
WHERE EncounterId IN (
    SELECT id FROM Encounters
    WHERE GameId = {game_id_to_filter}
);

试试这个查询:

DELETE EncounterCards 
FROM EncounterCards INNER JOIN Encounters 
ON Encounters.Id = EncounterCards.EncounterId 
WHERE Encounters.GameId = {$game_id}

表名已添加到FROM关键字之前。 请参阅多表DELETE语法

您需要指定删除记录的位置。 在这种情况下,我在FROM关键字之前添加了ALIAS

DELETE  a
FROM    EncounterCards a 
        INNER JOIN Encounters b
            ON a.EncounterID = b.ID
WHERE   b.GameID = 5

暂无
暂无

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

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