[英]PHP MySql: SUM table value Where=“from-other-table”? (INNER JOIN)
[英]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 = 5
的EncounterCards
表中的所有記錄。 當我進行內部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.