Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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/7/sql-server/23.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 删除两列中都不存在的记录_Mysql - Fatal编程技术网

Mysql 删除两列中都不存在的记录

Mysql 删除两列中都不存在的记录,mysql,Mysql,我需要从ent表中删除在ent\U id或ent\U id\U val表值中的 耳鼻喉科 价值观 ent\u id可以在值表中的ent\u id和ent\u id\u val的任一列中。 在上面的示例中,我希望删除记录ent_id=3。 下面是我的尝试,它确实删除了一些,但我想知道为什么它不完全删除所有?我在ent表中仍有记录,但未在value表中使用 DELETE e.* FROM ent e LEFT JOIN value v1 on e.ent_id = v1.ent_id LEFT

我需要从ent表中删除在ent\U ident\U id\U val值中的

耳鼻喉科

价值观

ent\u id可以在值表中的ent\u id和ent\u id\u val的任一列中。 在上面的示例中,我希望删除记录ent_id=3。 下面是我的尝试,它确实删除了一些,但我想知道为什么它不完全删除所有?我在ent表中仍有记录,但未在value表中使用

DELETE e.* 
FROM ent e 
LEFT JOIN value v1 on e.ent_id = v1.ent_id 
LEFT JOIN value v2 on v2.ent_id_val = e.ent_id
WHERE v1.ent_id is null and v2.ent_id_val is null


多么漂亮的回答方式。。。令人惊叹的。甚至在正确理解问题之前,我就被说服投票支持:)SQLFiddle也很棒:)是的,SQLFiddle很棒!:D汉克斯,我想这会有用的,我的表很大,还在运行:D你知道为什么我的查询不能很好地工作吗?@William我打赌你没有正确地为表编制索引。顺便问一下,您使用了哪个查询?你能发布你的表的模式吗,这样我就可以看到你是否有索引了
desc值请?谢谢
+--------+------------+
| ent_id | ent_id_val |
+--------+------------+
|      1 |       NULL |
|   NULL |          2 |
+--------+------------+
DELETE e.* 
FROM ent e 
LEFT JOIN value v1 on e.ent_id = v1.ent_id 
LEFT JOIN value v2 on v2.ent_id_val = e.ent_id
WHERE v1.ent_id is null and v2.ent_id_val is null
DELETE a  
FROM  ent a
      LEFT JOIN value b
         ON   a.ent_ID = b.ent_ID
      LEFT JOIN value c
         ON   a.ent_ID = c.ent_id_val
WHERE b.ent_ID IS NULL AND c.ent_id_val IS NULL;
DELETE a FROM ent a
        LEFT JOIN 
        (
            SELECT ent_ID FROM value
            UNION
            SELECT ent_id_val AS ent_ID FROM value
        ) b ON a.ent_ID = b.ent_ID
WHERE   b.ent_ID IS NULL