首页 > 解决方案 > 包含 __ 的 SQL 计数列,没有重复?

问题描述

我正在尝试使用两个表格计算包含少于 20 个行项目的“发票”数量,但不重复发票计数(抱歉,很难解释)

这就是我所拥有的:

SELECT COUNT(a.invoice_id) 
FROM invoices a, invoice_line_items b 
WHERE b.line_item_amount < 20;

这个结果:

+---------------------+
| COUNT(a.invoice_id) |
+---------------------+
|                1710 |          |
+---------------------+

但是当我这样做时SELECT,我注意到有多次相同的发票(因为它包含多个带有条件的行项目)。我该如何解决?我知道我可以使用 distinct 但我不知道在哪里放置它。谢谢!

标签: sqljoincount

解决方案


我想你想要:

SELECT COUNT(DISTINCT ilt.invoice_id)
FROM invoice_line_items ilt
WHERE ilt.line_item_amount < 20;

笔记:

  • 切勿FROM子句中使用逗号。
  • 始终使用正确、明确、标准、可读的JOIN语法。
  • 使用有意义的表别名。

推荐阅读