【问题标题】:mysql select row number querymysql选择行号查询
【发布时间】:2015-05-20 20:52:36
【问题描述】:

我在尝试在表的某个子集中根据(upvotes - downvotes)选择行号时遇到问题,但我还需要在同一查询中重置@rownum:

此查询有效,但我需要运行其中两个。无论如何,将集合 @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

【问题讨论】:

  • 引发错误。什么错误,在哪里?

标签: php mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这样的事情也应该起作用:

    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;
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多