首页 > 解决方案 > sqlite中的表别名但不是mysql

问题描述

我已将完全相同的数据库表从 MYSQL 移动到 SQLITE。以下查询适用于 MYSQL

select castkey, frname, lname, rolename from patrons, cast 
WHERE (patrons.personkey=cast.personkey) and cast.showkey=8 
order by cast.roletype, sex desc

但在 SQLITE 中,我收到“'.' 附近的错误”语法错误。使用 cast 到 c 的表别名,查询工作正常:

select castkey, frname, lname, rolename from patrons, cast as c
WHERE (patrons.personkey=c.personkey) and c.showkey=8 
order by c.roletype, sex desc

Sqlite 不喜欢第一个版本的查询的原因是什么?

标签: mysqlsqlite

解决方案


您可以在SQLite 关键字CAST列表中找到。 尽管 SQLite 允许使用大多数关键字作为标识符,但您应该避免使用它们,或者如果使用它们,请将它们括在反引号、方括号或双引号中。 这有效:

select castkey, frname, lname, rolename 
from patrons, cast 
where (patrons.personkey=`cast`.personkey) and `cast`.showkey=8 
order by `cast`.roletype, sex desc

但您还应该使用正确的连接语法:

select castkey, frname, lname, rolename 
from patrons join cast 
on (patrons.personkey=`cast`.personkey) 
where `cast`.showkey=8 
order by `cast`.roletype, sex desc

推荐阅读