mysql - 多个 JOIN 太复杂

标签 mysql

这变得比我能理解的更复杂了。我已经从此处的另一篇文章修改了此查询,现在我需要添加另一个联接,但它不起作用。

这是 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/

相关文章:

php - 数据不显示

MySQL' INSERT ... ON DUPLICATE KEY UPDATE 主键限制

php - FullText 或 LIKE 搜索问题(无法找到库存)

mysql - 如何获得外键的ON DELETE和ON UPDATE操作值?

mysql - 如何使用通配符 (%) 搜索但不包含空格?

c# - sql存储过程与代码,对于大量数据,哪个更好?

php - 如何通过向数据库提交表单将 youtube 短 url 更改为可嵌入值?

mysql - 使用 SELECT 更新以创建排名(效率)

mysql - MAMP Pro 和 MySQL 出现 fatal error : Please read "Security" section of the manual to find out how to run mysqld as root

mysql - CakePHP HABTM 关系