我在尝试根据表的某个子集中的(upvotes-downpots)选择行号时遇到了这个查询的问题,但我还需要在同一查询中重置@rownum:
这个查询有效,但我需要运行其中两个查询。无论如何,将set@rownum组合成一个查询,我的尝试都是徒劳的。
SET @rownum = 0;
SELECT rank
FROM (SELECT *, @rownum:=@rownum + 1 AS
rank FROM Cars where Auto_SET = 'BMW'
order by (upvotes-downvotes) DESC) d
WHERE ID = 391802
这个抛出了一个错误:
SELECT rank
FROM (SELECT *, @rownum:=@rownum + 1 AS
rank FROM Cars where Auto_SET = 'BMW' ,
(SELECT @rownum:=0) r order by
(upvotes-downvotes) DESC) d
WHERE ID = 391913
cross-join
应该与select from table_name
一起使用,类似
SELECT rank
FROM (
SELECT *,
@rownum:=@rownum + 1 AS rank
FROM Cars ,(SELECT @rownum:=0) r
where Auto_SET = 'BMW'
order by
(upvotes-downvotes) DESC
) d
WHERE ID = 391913
类似的东西也应该起作用:
SELECT @rn := @rn+1 AS RANK,t1.* FROM (
# Your query here.
SELECT * FROM Cars WHERE Auto_SET = 'BMW'
WHERE ID = 391913 ORDER BY (upvotes-downvotes) DESC
) t1, (SELECT @rn:=0) t2;
祝你好运!!