这是我的 MySql 查询执行的顺序:
Query 1 : SET @channel_rank = 0;
查询2:
SELECT time_of_day, @channel_rank := IF(
@current_channel = channel,
1,
@channel_rank + 1
) AS channel_rank ,
@current_channel := channel AS channel,Views
FROM
(
SELECT @channel_rank = 0,time_of_day,channel, SUM(Views) AS 'Views'
FROM access_logs_meaningful_optimized
WHERE `time_of_day` = 0
AND playing_date = '2016-10-26' GROUP BY channel
ORDER BY SUM(views) DESC
LIMIT 5
) xx;
结果示例:
time_of_day channel_rank channel Views
----------- ------------ --------------------- --------
0 1 Tolo 1291
0 2 Tolo News 855
0 3 Samaa News 805
0 4 Ary Digital 695
0 5 Dunya News 653
在这里我必须执行SET @channel_rank = 0;
首先为了分配变量(@channel_rank
) 到 0。我的问题是HOW, 在 - 的里面query 2
我可以分配变量(@channel_rank
) 到 0 最初使second query
独立于first
one.
您不必在子查询中初始化变量。您可以使用以下方式初始化变量CROSS JOIN
:
SELECT time_of_day,
@channel_rank := IF(@current_channel = channel, 1,
@channel_rank + 1) AS channel_rank,
@current_channel := channel AS channel,Views
FROM
(
SELECT time_of_day,channel, SUM(Views) AS 'Views'
FROM access_logs_meaningful_optimized
WHERE `time_of_day` = 0
AND playing_date = '2016-10-26'
GROUP BY channel
ORDER BY SUM(views) DESC
LIMIT 5
) AS xx
CROSS JOIN (SELECT @channel_rank := 0) var
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)