我有一个需要提取的MySQL相关数据表。我正在运行此查询以查找给定id的x和y之间的相关性;但是,我需要针对y.id = 2,3,4,5运行x.id = 1 ...目前,我正在为每个配对多次运行以下命令。有没有办法加快查询速度,以便我可以像第二个等式一样运行查询?
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;
我希望结果是这样的:
相关
0.83
0.82
0.74
0.64
...
但是现在查询只输出一行(x.id和最后一个y.id之间的相关性)
答案 0 :(得分:0)
如果您使用的是MySQL 5.0及更高版本,您可能需要考虑存储过程来处理其中的一些内容....
另外,你考虑过子查询吗? http://dev.mysql.com/doc/refman/5.1/en/subqueries.html
答案 1 :(得分:0)
很难回答这个问题,因为从您的描述中不清楚您需要查询做什么。
但我猜你可以使用GROUP BY
来达到你想要的效果。对不起,我无法展示一个例子,因为我不知道你想要的结果是什么。