【发布时间】:2017-10-18 13:41:41
【问题描述】:
这是我的查询的简化版本。它在 SQLite 中运行没有问题,但在 MYSQL 中则不然。
错误:“on 子句”中的未知列“tab2.key”
SELECT
tab2.key AS remarksId,
tab1.sessionDate AS date,
tab1.sessionStart AS startTime
FROM
table1 AS tab1,
table2 AS tab2,
table3 AS tab3,
table4 AS tab4
INNER JOIN
table5 AS tab5
ON
tab5.remarkId = tab2.key
WHERE
tab1.userId='<anyNumber>' AND
tab2.objectiveId='<anyKey>' AND
tab1.reportId=tab2.reportId AND
tab1.reportId=tab3.key AND
tab4.key=tab3.sortieId
ORDER BY date, startTime;
不幸的是,将列放入 ` 并没有帮助。
我不确定将列命名为“键”是否是一种好习惯 (MYSQL Keywords),但由于现有安装,我必须以某种方式处理这个问题。为了快速测试,我重命名了“key”列,但也没有任何成功。
非常感谢
【问题讨论】:
-
不要混合连接符号。引擎可以处理 ANSI 89 或 ANSI 92,而不是两者。我建议更改您的 , 连接表示法以使用内部连接表示法。
-
为什么要混合连接类型?您应该只使用
JOIN语法与 INNER、LEFT、RIGHT 等。为什么要使用旧式的逗号分隔连接? -
你为什么要为 tab2.key 做一个别名(作为备注 ID)然后根本不在连接中使用它?
-
可能是愚蠢的评论...但是您是否在正确的架构上执行该 SQL?
标签: mysql sql sqlite inner-join