首页 > 解决方案 > MySQL 查询不适用于其他版本

问题描述

以下查询在 MySQL(Ver.4.1.22)中有效,但相同的查询在较新版本(5.5.56-MariaDB)中出现错误。谁能帮我解决这个问题。

SELECT 
                    c3.label_id
                FROM 
                    label_based_costs c3, label_based_text s3, platform o3, basic b3, 
                    series r3
                    LEFT JOIN platform o2 ON o3.content_code = o2.content_code AND o2.year = '2018'
                    LEFT JOIN basic b2 ON b3.bs_code = b2.bs_code AND b2.year = '2018'

错误信息:

Error in query (1054): Unknown column 'o3.content_code ' in 'on clause' 

标签: mysqlmariadb

解决方案


这是因为您正在混合EXPLICIT 和 IMPLICIT join Syntax

不推荐使用隐式连接语法,您应该停止使用它。

在同一个查询中混合这两种语法甚至是最糟糕的,并且在最近的 MySQL 版本中会导致这样的错误(现在版本 4 已经很老了......)。

您的查询应该是

SELECT 
    c3.label_id
FROM 
    label_based_costs c3
    CROSS JOIN label_based_text s3
    CROSS JOIN platform o3
    CROSS JOIN basic b3
    CROSS JOIN series r3
    LEFT JOIN platform o2 ON o3.content_code = o2.content_code AND o2.year = '2018'
    LEFT JOIN basic b2 ON b3.bs_code = b2.bs_code AND b2.year = '2018'

附带说明一下,所有这些 CROSS JOIN 都是可疑的,因为您正在 5 个表之间创建一个巨大的笛卡尔积,并且可能需要对其进行审查


推荐阅读