2011-09-01 131 views
1

假设用户表有200条记录。将变量传递给嵌套查询

低于一定的查询工作worker_id 例如worker_id 2738:

SELECT SUM(something) AS T_BOIN 
FROM (
SELECT SUM(A.boin) AS something 
FROM hall A JOIN user B ON A.who=B.id 
WHERE B.worker_id = 2738 
ORDER BY total_per_user DESC LIMIT 10 
) AS mastertbl 

我想执行200个独立worker_ids这样上面的查询:

SELECT @TT:=BK.worker_id AS TID, 
(SELECT SUM(something) AS T_BOIN 
FROM (
    SELECT SUM(A.boin) AS something 
    FROM hall A 
    JOIN user B ON A.who=B.id 
    WHERE B.worker_id = @TT 
    ORDER BY total_per_user DESC 
    LIMIT 10) AS mastertbl 
) AS TEAM 
FROM user BK 
INNER JOIN (SELECT @TT :=0) AS WESS 
GROUP BY TID 

但@ tt超出范围。

在此先感谢。

回答

0

我想这可能为你工作...

SELECT worker_id, SUM(something) AS T_BOIN 
FROM (
    SELECT b.worker_id, SUM(A.boin) AS something, if(@wid = b.worker_id, @cnt:[email protected]+1, @cnt:=1 AND @wid := b.worker_id) cnt 
    FROM hall A 
    JOIN user B ON A.who=B.id 
    ORDER BY b.worker_id, total_per_user DESC 
) AS mastertbl 
WHERE mastertbl.cnt <= 10 
GROUP BY worker_id; 
+0

谢谢你,但它不工作:/ –