这变得比我能理解的更复杂了。我已经从此处的另一篇文章修改了此查询,现在我需要添加另一个联接,但它不起作用。
这是 MySQL 中的当前查询:
SELECT * FROM (SELECT *,
@rn := IF(@prev = class, @rn + 1, 1) AS rn,
@prev := class
FROM HeatWaveData
JOIN
(SELECT @prev := NULL, @rn := 0) AS vars
ORDER BY class, score DESC)
AS T1
WHERE rn <= 3
AND score > 0
AND dsqreason = ''
AND class <> ''
现在我需要加入(SELECT * FROM Awards WHERE active ON Awards.award = HeatWaveData.award)
但它因错误而失败。我已经尝试了一些更改和不同的东西,但不断出现错误。
这是我更新的查询和错误:
SELECT * FROM (SELECT *,
@rn := IF(@prev = class, @rn + 1, 1) AS rn,
@prev := class
FROM HeatWaveData
JOIN
(SELECT @prev := NULL, @rn := 0) AS vars
ORDER BY class, score DESC)
AS T1
LEFT JOIN
(SELECT * FROM Awards WHERE active = '1'
ON Awards.award = T1.award) AS T2
WHERE rn <= 3
AND score > 0
AND dsqreason = ''
AND class <> ''
错误:
error: #1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'ON Awards.award = T1.award) AS T2 WHERE rn <= 3 AN' at line 11
最佳答案
只需尝试用“正常”连接替换您的子选择:
旧:
LEFT JOIN
(SELECT * FROM Awards WHERE active = '1'
ON Awards.award = T1.award) AS T2
新:
LEFT JOIN Awards AS T2
ON T2.award = T1.award AND T2.active = '1'
关于mysql - 多个 JOIN 太复杂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561596/