【问题标题】:SQL Query with Count带计数的 SQL 查询
【发布时间】:2012-10-04 02:25:18
【问题描述】:

我有以下表格:

列表

  • id - 键
  • 姓名

项目

  • id - 键
  • 姓名

list_item

  • list_id - 列出表的外键
  • item_id - 项目表的外键

我有以下疑问:

SELECT l.id, l.name
FROM list l, list_item li
WHERE l.id = li.list_id

我想将列表中的项目数添加到结果集中。我该怎么做?

【问题讨论】:

  • 您是否尝试将COUNT() 添加到您的查询中?另外请添加一些示例数据和预期结果。

标签: mysql sql sqlite


【解决方案1】:
SELECT l.id, l.name, COUNT(li.item_id) AS item_count 
FROM list l
LEFT JOIN list_item ON l.id = li.list_id
GROUP BY l.id

【讨论】:

  • 不应该l.nameGROUP BY 子句的一部分吗?
  • l.idlist 的键,为什么l.name 应该是 GROUP BY 子句的一部分?
  • 似乎在 MySQL 中有效(但 SQL Server 抱怨除了应用聚合函数的列之外的所有列,都必须在 GROUP BY 列表中)。抱歉误报!
  • @Vikdor 是的,你是对的,这是 MySQL 的特别之处。如果这不是 MySQL,你的警报是有意义的 :)
【解决方案2】:

试试这个:

SUM(l.id = li.list_id)

【讨论】:

  • 您的意思是说COUNT 而不是SUM
  • 我认为 SUM 在这里可以正常工作,COUNT 应该也可以,但 SUM 更灵活...
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 2022-07-07
相关资源
最近更新 更多