mysql - 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'
解决方案
这是因为您正在混合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 个表之间创建一个巨大的笛卡尔积,并且可能需要对其进行审查
推荐阅读
- javascript - 如何将 vuetify 骨架加载器绑定到 v-image 加载事件
- node.js - 无法使用 pm2 运行节点应用程序
- python - C++ 算法到 Python
- java - Spring批量选择基于指定来源的项目阅读器数据提供者
- python - 为什么使用 Chromium 的 python selenium 中的 headless 不起作用?
- silverstripe - Silverstripe HTMLText 字段给了我非富文本
- python-3.x - python中字典列表中的总和值
- javascript - 仅在从 React Native 中的特定页面导航时如何进行模式切换?
- windows - 有没有办法在 Windows 10 中手动添加 Web 凭据?
- c - 为什么大多数编译器不能做模数计算组合优化?