MySQL 使用 Disitinct 进行选择,以及使用 is_null 在哪里进行选择?

标签 mysql

有人可以解释一下这个 MySQL 查询及其作用吗?

据我了解,它执行以下操作:

选择发票表中没有条目的invoices_charge发票id。这是正确的吗?

SELECT DISTINCT invoice_charges.invoiceid as invoice
FROM    `invoice_charges`
LEFT JOIN `invoice`
ON invoice_charges.invoiceid = invoice.invoiceid
WHERE invoice.invoiceid IS NULL 

关键字 DISTINCT 在此查询中是否有任何影响?以下查询是否是此查询的更好替代方案,可以实现相同的结果?

SELECT invoice_charges.invoiceid as invoice
FROM    `invoice_charges`
WHERE invoice_charges.invoiceid  NOT IN  invoice.invoiceid
GROUP BY invoice_charges.invoiceid 

最佳答案

此查询返回 invoice_charges 中与 invoice 不匹配的所有 invoiceid

据推测,这些都是外键关系失败的示例。

distinct 的目的是防止结果集中出现重复项。 invoice_charges 中可能有两条具有相同 invoiceid 的记录,其中 invoiceid 不在 invoice 表中。

关于MySQL 使用 Disitinct 进行选择,以及使用 is_null 在哪里进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986587/

相关文章:

mysql - 如何根据 MySQL 中最后插入的 PK 匹配指定基于时间的范围?

php - 从多个输出中选择mysql中带有特殊字符的一个

php - 连接两个 PHP 变量以创建按钮单击链接

php - 需要在每个连接的基础上在 PHP/MySQL 中使用 UTC 时间戳转换

mysql - 在 Workbench 6.3 中创建新连接时,我得到 "unknown database"

php - 在mysql数据库中查找前缀cms

php - Mysql多表链接连接

MySQL 没有有效地使用索引进行 ORDER BY 查询

php - 从另一个表中检索命中数的 SUM

c# - 从 C# 应用程序调试 MySQL 连接问题