首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否显示计算中的所有行?

问是否显示计算中的所有行?
EN

Stack Overflow用户
提问于 2009-05-26 20:36:24
回答 2查看 78关注 0票数 1

我有一个需要提取的相关性数据的MySQL表。我正在运行这个查询来查找给定id的x和y之间的相关性;但是,我需要对y.id=2,3,4,5运行x.id=1 ...目前,我只是为每个配对多次运行下面的命令。有没有一种方法可以加快查询速度,这样我就可以像第二个等式一样只运行一次查询?

代码语言:javascript
复制
SELECT @correlation := (COUNT(x.value)*SUM(x.value*y.value) -
  sum(x.value)*sum(y.value))/SQRT((COUNT(x.value)*SUM(x.value*x.value) -
  sum(x.value)*sum(x.value))*(COUNT(y.value)*SUM(y.value*y.value) -
  sum(y.value)*sum(y.value))) AS correlation 
FROM tbl_expressions x, tbl_expressions y 
WHERE x.id=1 AND y.id=2 AND x.expressionnumber=y.expressionnumber;

SELECT @correlation := (COUNT(x.value)*SUM(x.value*y.value) -
  sum(x.value)*sum(y.value))/SQRT((COUNT(x.value)*SUM(x.value*x.value) -
  sum(x.value)*sum(x.value))*(COUNT(y.value)*SUM(y.value*y.value) -
  sum(y.value)*sum(y.value))) AS correlation 
FROM tbl_expressions x, tbl_expressions y 
WHERE x.id=1 AND y.id IN (2, 3, 4, 5, 6, 7) AND x.expressionnumber=y.expressionnumber;

我希望结果是这样的:

相关性

.83

.82

.74

.64

..。

但是现在查询只输出一行( x.id和最后一个y.id之间的相关性)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-26 20:48:33

很难回答这个问题,因为从您的描述中并不清楚您需要查询做什么。

但是我猜你也许能够使用GROUP BY来实现你想要的东西。很抱歉我不能展示一个例子,因为我不能告诉你你想要的结果是什么。

票数 0
EN

Stack Overflow用户

发布于 2009-05-26 20:41:18

如果您使用的是MySQL 5.0及更高版本,则可能需要考虑使用存储过程来处理其中的一些内容。

另外,您是否考虑过子查询?http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/912627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档