Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/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:匹配不存在的记录_Mysql - Fatal编程技术网

MySQL:匹配不存在的记录

MySQL:匹配不存在的记录,mysql,Mysql,我有两张桌子: Customer +---+-----------+ |ID |VoicemailID| Voicemail +---+----------+ |ID |CustomerID| Voicemail.CustomerID将被重新定义为Customer.ID,visa将被重新定义为Customer.ID 如果Customer.VoicemailID不再是Voicemail表中的有效记录,我如何从Customer表中选择行 这种情况下,该记录以前存在于语音邮件表中,但后来被删除。我

我有两张桌子:

Customer
+---+-----------+
|ID |VoicemailID|

Voicemail
+---+----------+
|ID |CustomerID|
Voicemail.CustomerID将被重新定义为Customer.ID,visa将被重新定义为Customer.ID

如果Customer.VoicemailID不再是Voicemail表中的有效记录,我如何从Customer表中选择行

这种情况下,该记录以前存在于语音邮件表中,但后来被删除。我现在需要在Customer表中找到所有具有不存在记录的VoicemailID的记录

我试过:

SELECT DISTINCT Customer.ID, Customer.VoicemailID
FROM Customers LEFT JOIN Voicemail ON Customer.VoicemailID <> Voicemail.ID

然而,我相信它会返回我想要的结果,与语音邮件实例仍然存在的结果混合在一起

您在左连接的右轨道上。但您需要查找匹配项,然后在失败时返回:

SELECT c.ID, c.VoicemailID
FROM Customer c LEFT JOIN
     Voicemail v
     ON c.VoicemailID = v.ID
WHERE v.ID IS NULL;

您在左连接的右轨道上。但您需要查找匹配项,然后在失败时返回:

SELECT c.ID, c.VoicemailID
FROM Customer c LEFT JOIN
     Voicemail v
     ON c.VoicemailID = v.ID
WHERE v.ID IS NULL;

可以使用子查询查找不存在的行。检查MySQL上不存在的语法:


可以使用子查询查找不存在的行。检查MySQL上不存在的语法:


这将为您提供所需的结果:

SELECT Customer.ID, Customer.VoicemailID
FROM Customer
   LEFT JOIN Voicemail ON Voicemail.ID = Customer.VoicemailID
WHERE Voicemail.ID IS NULL

这将为您提供所需的结果:

SELECT Customer.ID, Customer.VoicemailID
FROM Customer
   LEFT JOIN Voicemail ON Voicemail.ID = Customer.VoicemailID
WHERE Voicemail.ID IS NULL

您可以像这样使用相关子查询

select * from customer a
 where not exists (select 1 from voicemail b 
                    where b.id = a.voicemailid)

您可以像这样使用相关子查询

select * from customer a
 where not exists (select 1 from voicemail b 
                    where b.id = a.voicemailid)

这里是[PHP:5.5.3]中的正确查询,我在XAMPP1.8.3中使用phpMyAdmin

SELECT * FROM Customer 
WHERE Customer.VoicemailID NOT IN (SELECT ID FROM Voicemail)

这里是[PHP:5.5.3]中的正确查询,我在XAMPP1.8.3中使用phpMyAdmin

SELECT * FROM Customer 
WHERE Customer.VoicemailID NOT IN (SELECT ID FROM Voicemail)

我知道外键。不幸的是,原来的表设计器没有使用它们,因为我知道外键。不幸的是,原来的表设计器没有使用mihadstooappend和Customer。语音邮件不是空的,因为我只是在有数字的实例之后。谢谢:我有太多的append和Customer。语音邮件不是空的,因为我只是在有数字的实例之后。谢谢:请在您的答案上添加一点详细说明,这样它将包含一些仅适用于代码的上下文。请在您的答案上添加一点详细说明,这样它将包含一些仅适用于代码的上下文。