作者:王言 | 来源:互联网 | 2023-02-03 15:48
这是我的查询的简化版本.它在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='' AND
tab2.objectiveId='' AND
tab1.reportId=tab2.reportId AND
tab1.reportId=tab3.key AND
tab4.key=tab3.sortieId
ORDER BY date, startTime;
不幸的是,把列放在"没有帮助".
我不确定是否将列'密钥'命名为一个好的做法(MYSQL关键字),但由于现有的安装,我必须以某种方式处理这个问题.为了快速测试,我重命名了"关键"列,但也没有任何成功.
非常感谢
1> xQbert..:
简单地说,不要混合连接符号,如果给出选择,请使用当前的ANSI 92连接语法而不是89标准(是的......那是1992年和1989年!)
其次...别名是为了帮助你保存输入并处理对同一个表的多个引用....所以...简化名称t1,t2,t3 ......
最后......如果你必须在mySQL中使用保留/限制词,请使用反引号.
SELECT t2.`key` AS remarksId
FROM table1 t1
INNER JOIN table2 t2
ON t1.reportId = t2.reportId
INNER JOIN table3 t3
ON t1.reportId = t3.`key`
INNER JOIN table4 t4
ON t4.`key` = t3.sortieId
INNER JOIN table5 t5
ON t5.remarkId = t2.`key`
WHERE t1.userId = ''
AND t2.objectiveId = ''
ORDER BY `date`, startTime;