Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果一行中的值存在于另一行SQL中,则删除重复行_Mysql_Duplicates - Fatal编程技术网

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;