我在删除所有具有特定值的行时遇到问题,然后删除与已删除的行列具有相同值的其他行。 以下是我现在所拥有的一个例子:
SELECT Race.intRaceID, Register.intRegID, Member.intMemberID
FROM Race
LEFT JOIN Register ON Race.intRaceID=Register.intRaceID
LEFT JOIN Member ON Register.intMemberID=Member.intMemberID
给了我:
+------------+-----------+-------------+
| intRaceID | intRegID | intMemberID |
+------------+-----------+-------------+
| 100 | 10 | 1 |
| 100 | 40 | 2 |
| 200 | NULL | NULL |
| 300 | 30 | 2 |
| 400 | 20 | 4 |
| 500 | NULL | NULL |
+------------+-----------+-------------+
所以,我试图做的是删除一个特定的intMemberID(保留NULL)和它们所关联的所有intRaceID。 我添加了
WHERE Member.intMemberID <> 2 OR Member.intMemberID IS NULL
给出结果:
+------------+-----------+-------------+
| intRaceID | intRegID | intMemberID |
+------------+-----------+-------------+
| 100 | 10 | 1 |
| 200 | NULL | NULL |
| 400 | 20 | 4 |
| 500 | NULL | NULL |
+------------+-----------+-------------+
但不会删除与intMemberID关联的所有intRaceID。 任何帮助将不胜感激
我试图展示的表是:
+------------+-----------+-------------+
| intRaceID | intRegID | intMemberID |
+------------+-----------+-------------+
| 200 | NULL | NULL |
| 400 | 20 | 4 |
| 500 | NULL | NULL |
+------------+-----------+-------------+
答案 0 :(得分:0)
我认为您必须编写WHERE
子句,如以下查询中所示:
SELECT Race.intRaceID, Register.intRegID, Member.intMemberID
FROM Race
LEFT JOIN Register ON Race.intRaceID = Register.intRaceID
LEFT JOIN Member ON Register.intMemberID = Member.intMemberID
WHERE Race.intRaceID NOT IN (
SELECT Race.intRaceID
FROM Race
INNER JOIN Register ON Race.intRaceID = Register.intRaceID
INNER JOIN Member ON Register.intMemberID = Member.intMemberID
WHERE Member.intMemberID = 2)
ORDER BY intRaceID;
这样您就可以排除intRaceID
与intMemberID
相关的所有记录,其值为2
。