Mysql 如果一行中的值存在于另一行SQL中,则删除重复行
我在删除所有具有特定值的行,然后删除与已删除的行列具有相同值的其他行时遇到问题。 下面是我现在拥有的一个例子:Mysql 如果一行中的值存在于另一行SQL中,则删除重复行,mysql,duplicates,Mysql,Duplicates,我在删除所有具有特定值的行,然后删除与已删除的行列具有相同值的其他行时遇到问题。 下面是我现在拥有的一个例子: 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 这给了我:
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(保留空值)和所有与之关联的intRaceID。
我补充说
但这不会删除与intMemberID关联的所有ID。
任何帮助都将不胜感激
我想展示的表格是:
+------------+-----------+-------------+
| intRaceID | intRegID | intMemberID |
+------------+-----------+-------------+
| 200 | NULL | NULL |
| 400 | 20 | 4 |
| 500 | NULL | NULL |
+------------+-----------+-------------+
我认为您必须编写如下查询中的
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
的所有记录
intRaceID位于两行:intMemberID=1和=2。因此,如果排除intMemberID=2,则仍然保持intRaceID=100。顺便问一下,为什么在执行SELECT查询时要谈论删除?你说的是从select中排除吗?是的,对不起,我的意思是从select中排除整行。我将编辑我的帖子以显示我想要的表格可能的副本
+------------+-----------+-------------+
| intRaceID | intRegID | intMemberID |
+------------+-----------+-------------+
| 200 | NULL | NULL |
| 400 | 20 | 4 |
| 500 | NULL | NULL |
+------------+-----------+-------------+
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;