我正在研究drupal website,我希望显示有限数量的术语。但是我失败了,在运行查询时,我简化了要询问的查询。
我想计算mySQL表有限行的总和,但不幸的是,mySQL上升了Unknown column' node.node_id'在' where子句'错误。
查询PostgreSQL (SQLFiddle)上的工作。 我有以下架构
create table rating (
node_id int,
rank int
);
create table node (
node_id int
);
insert into node
(node_id)
values
(1),
(2);
insert into rating
(node_id, rank)
values
(1, 2),
(1, 3),
(1, 5),
(1, 7),
(2, 5),
(2, 7),
(2, 11),
(2, 13)
;
我的疑问是
select node.node_id, (
select sum(rank)
from (
select child_rating.rank
from rating as child_rating
where child_rating.node_id = node.node_id
limit 3
) as _child
) as sum
from node
有关预期结果,请参阅SQLFiddle。 (或者参见下面的图片了解SQLFiddle的预期结果。
我想知道是否有人帮助我。感谢
答案 0 :(得分:0)
在MySQL中,根据每个组限制记录总是很棘手。
以下sql查询为您提供了解决方案:
select node_id, sum(rank) from (
SELECT @row_number:=CASE WHEN @node_id=node_id
THEN @row_number+1 ELSE 1 END AS row_num,@node_id:=node_id AS node_id, rank
FROM rating, (SELECT @row_number:=0,@node_id:='') AS t
ORDER BY node_id
)t1
where row_num <= 3
group by node_id
;
SQL小提琴链接:http://sqlfiddle.com/#!2/b142f/5
P.S:Pl看一下我几天前回答的以下链接。 auto increment by specific column's data