mysql视图查询未识别的问题

时间:2013-07-30 13:03:06

标签: mysql

有人看到这个查询有什么问题吗? 我一直在尝试很多不同的事情,我无法做到正确

SELECT h.guru_or_guru_user_id,
        (
            (0.25 * (s.total_pips/sr.highest_total_pips)) +
            (0.2 * (s.total_gain/sr.highest_total_gain)) +
            (0.15 * (sr.lowest_volatility/s.volatility)) +
            (0.05 * (s.running_weeks/sr.most_running_weeks)) +
            (0.15 * (s.total_trades/sr.most_total_trades)) +
            (0.2 * (s.average_profit_loss_ratio/sr.highest_average_profit_loss_ratio))
        ) AS guru_score
from gt_view_mt_stats as s 
inner join gt_history as h
    on s.login = h.login
    and h.is_guru_history = 1
left join gt_view_stats_records as sr
group by h.guru_or_guru_user_id
order by guru_score desc 

enter image description here

3 个答案:

答案 0 :(得分:1)

快速语法检查会出现以下错误:

group(15,1) expected token:ON JOIN

第15行是以GROUP BY开头的行,紧接在LEFT JOIN之前的行,但是您没有ON条件用于连接 - 因此错误“预期令牌:ON“。

您必须更新查询以包含ON的{​​{1}}条件:

LEFT JOIN

答案 1 :(得分:1)

替换此行:

left join gt_view_stats_records as sr

删除left join并将其添加为正常:

.....
 and h.is_guru_history = 1,
 gt_view_stats_records as sr
....

答案 2 :(得分:0)

除guru_or_guru_user_id之外的所有字段都不在group by子句中,并且没有封装在聚合函数中,因此MySql获取第一个值,您想要的结果可能与实际结果不同。

因此,您使用LEFT OUTER JOIN,因此SR字段可能为NULL,因此您的表达式可能会被此非托管值损坏。

在LEFT OUTER JOIN之后,其中的子句是ON?