【问题标题】:MySQL query does count then display additional dataMySQL 查询确实计数然后显示附加数据
【发布时间】:2012-06-07 17:19:35
【问题描述】:

当前的查询效果很好,可以让我计算每条记录和办公室名称在表中出现的次数和办公室。如何扩展此查询以首先显示 Office 和 Count 就像它当前一样,然后在与 Office 匹配的每条记录的计数下方显示列 lastName、Phone,然后移动到下一个 Office 和 Office(Count) 并显示那些姓氏,电话记录等等?这在 MySQL 中可行吗?

SELECT Office, COUNT(Office) AS c 
FROM Active 
GROUP BY Office 
HAVING COUNT(Office) >= 5  ORDER BY c DESC

例子:

办公室1 | 2

办公室1 |姓氏 |电话

办公室1 |姓氏 |电话

办公室2 | 3

办公室2 |姓氏 |电话

办公室2 |姓氏 |电话

办公室2 |姓氏 |电话

【问题讨论】:

  • 它是相对的......对我来说它非常先进;-)

标签: mysql sql


【解决方案1】:

不,你不能那样做。您最好的选择是UNION,但您必须拥有相同数量的列和列类型,这与您的条件不符。

你为什么不试试

SELECT Office, lastName, Phone FROM Active ORDER BY Office

并在您的编程语言中,解析行并使用计数器变量来计算相同的 Office 记录,并构建您自己的表。

编辑:您说它用于直接导出到电子表格。您可以在两个查询中执行此操作:执行您的 count() 查询,然后执行我上面的查询。导出两个结果并根据需要将它们混合到电子表格中。嘿,它完成了工作。

【讨论】:

  • 但是 MySQL 是编程语言,我打算直接将这些数据导出到电子表格中,而不是在网络上显示。
  • 哥奇亚。好吧,基本上,我的回答是不,你不能这样做,哈哈。
  • LOL...我们会看到的,希望你是错的 ;-) SQL 在合适的人手中非常强大(只是不是我的)。
  • 列的数量/类型必须在您的查询中匹配,而您的预期结果不匹配,所以您不能这样做(据我所知>_
  • LOL...所以 excel 成为我的编程语言。很公平,我可以这样工作。感谢您帮助我解决问题:-)
【解决方案2】:

您可以尝试使用 MySQL 的UNION,但列数和列名必须相同。

总的来说,这似乎是一种错误的方法。尝试重新考虑不需要这种输出的逻辑。

我建议只接收姓氏和电话,并缓存结果,然后解析它们。 COUNT(*) 在技术上是冗余信息,因为具有相同 Office 的行数已经描述了这一点。

【讨论】:

  • 我需要计数,以便我可以 ORDER BY 并首先显示计数最大的那些,我真的不需要显示它,只要它是 ORDER BY 正确,但它是一个很好的参考。
  • 在两个查询中执行。一个得到订单,另一个得到每个人的办公室 ID、姓名和电话。显示时 - 遍历 Ordered 查询,但处理用户。
  • 你能给我一个样本吗,我正在为如何开始这样做而苦苦挣扎?
  • 根据您对另一个答案的评论-您说您不想在存储结果之前对其进行解析。这使得它非常不可行。我强烈推荐中间解析。不仅仅是为了操控的力量,而是为了速度。
  • 这个怎么样...我有另一个名为Listing 的表,其中还包含Office、LastName 和Phone...是否可以在计数后执行UNION 来显示这些数据?我知道它可能效率不高,但我只需要每季度运行一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多