[英]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.