MySQL-获取行号后选择并加入

时间:2019-07-17 13:41:09

标签: mysql sql

我正在尝试获取以下选择语句(其中包括JOIN列)的行号(即等级),但没有在开始时声明SET变量。

原因是因为我使用的WordPress / MySQL插件只能模拟单个语句代码。无法识别将先验变量声明为0然后递增的常见技巧。

是否还有另一种方法可以使用下面的“选择并加入”来获取行号?

SELECT s.id
     , s.item
     , s.state
     , c.job_count 
  FROM wp_state_tab s
  LEFT 
  JOIN wp_custom_tab c
    ON c.state_id = s.id 
 WHERE c.date = CURDATE()  
 ORDER 
    BY c.job_count DESC

样本数据输出

enter image description here

MySQL版本为5.6.40-84.0-log

2 个答案:

答案 0 :(得分:0)

您可以将子查询用于新定义的行号的迭代,而无需将变量显式声明为:

   select @i :=  @i + 1 as rownum, 
          s.id, s.item, s.state, c.job_count 
     from wp_state_tab s
     left join wp_custom_tab c
       on c.state_id = s.id and c.date = CURDATE()
     join (select @i:=0) t2 
    order by job_count desc;

答案 1 :(得分:0)

MySQL可能对变量有些摆弄-弃用它们是一件好事。对于ORDER BYGROUP BY,您通常必须使用子查询:

SELECT (@rn := @rn + 1) as seqnum, sc.*
FROM (SELECT s.id, s.item, s.state, c.job_count 
      FROM wp_state_tab s LEFT JOIN
           wp_custom_tab c
           ON c.state_id = s.id
      WHERE c.date = CURDATE()  
      ORDER BY c.job_count DESC
     ) sc CROSS JOIN
     (SELECT @rn := 0) params;