【问题标题】:does the order of columns in a SQL select matters?SQL 选择中的列顺序是否重要?
【发布时间】:2010-12-18 23:56:27
【问题描述】:

我的问题是关于左连接,我试图计算有多少人在跟踪某个项目。 (可以有零个关注者)

现在我可以让它工作的唯一方法是添加

group by idproject

我的问题是,如果这是一种避免使用它并且只选择和隐式地使用的方法
设置该组选项。

SQL:

select `project_view`.`idproject` AS `idproject`,
count(`track`.`iduser`) AS `c`,`name`
from `project_view` left join `track` using(idproject)

我 expected it count null 为零,但它根本没有出现,
如果我忽略计数,那么它在没有关注者的地方显示为 null。

【问题讨论】:

  • 您需要 group by 以便聚合函数知道要计算什么。选择的顺序无关紧要。

标签: sql mysql group-by aggregate


【解决方案1】:

如果您有 WHERE 子句来指定某个项目,那么您不需要需要 GROUP BY。

SELECT project_view.idproject, COUNT(track.iduser) AS c, name
FROM project_view
LEFT JOIN track USING (idproject)
WHERE idproject = 4

如果您想要对每个项目进行计数,那么您确实需要一个 GROUP BY。

SELECT project_view.idproject, COUNT(track.iduser) AS c, name
FROM project_view
LEFT JOIN track USING (idproject)
GROUP BY idproject

【讨论】:

  • 这就是我所做的,我认为我可以在不明确使用“group by”的情况下完成类似的行为。现在我明白它的问题了
【解决方案2】:

是的,选择的顺序很重要。出于性能原因,您(通常)希望首先选择最有限的选择来缩小数据集。这使得每个后续查询都在较小的数据集上运行。

【讨论】:

  • 虽然这可能是真的,但它确实与我的问题有关,无论如何感谢您的提示。
猜你喜欢
  • 2017-05-21
  • 2012-07-11
  • 2017-11-27
  • 2011-06-02
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
相关资源
最近更新 更多