MySQL查询不适用于不同的版本

时间:2018-05-04 13:30:38

标签: mysql mariadb

以下查询适用于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' 

1 个答案:

答案 0 :(得分:1)

这是因为你正在混合EXPLICIT and 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个表之间创建了一个巨大的笛卡尔积,并且可能需要进行审核