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