我有我需要提取的相关数据的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之间的相关性)
感谢这个工作,当我追加GROUP BY y.id – 2009-05-26 20:53:33