mysql - 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 不喜欢第一个版本的查询的原因是什么?
解决方案
您可以在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
推荐阅读
- c# - 这是从 API 检索数据的好方法吗?
- swift - 如何快速加权范围内的值?
- c# - 如何在 Razor 中单击按钮时更改我的模型值?
- javascript - Redux 可观察史诗连续采取很少的行动,但只返回最后
- php - 从 whereIn 获取重复项 - Laravel
- c# - 我在另一个视图模型中有一个视图模型列表。如何将参数从动作传递给控制器?
- c++ - std::mutex 作为类成员,并将类对象存储到容器
- c# - 按住鼠标左键时从多选集合中获取最后一项
- r - 如何删除在 R 中最多有 6 个非 NA 变量的行
- tensorflow - 带有估计器的参数服务器策略(Tensorflow)