我正在尝试获取以下选择语句(其中包括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
样本数据输出
MySQL版本为5.6.40-84.0-log
答案 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 BY
或GROUP 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;