mysql - 如何通过在 MySQL 中创建虚拟表来解决此错误?
问题描述
我正在尝试创建一个虚拟表,当我只能访问我正在工作的视图范围内的类别 ID 时,我可以在其中查找 *_categories 表的别名字段中的值。(不确定这些是否都是正确的条款)。
在 *_categories 表中,id 在 id 列中,在 *_content 表中,类别 id 在 catid 列中。
这是我到目前为止所得到的:
CREATE VIEW articles AS SELECT article.*,
category.alias AS category_alias,
FROM s5vuq_content AS article LEFT JOIN s5vuq_categories AS category ON category.'id' = article.'catid'
但我得到这个错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘FROM s5vuq_content AS article
LEFT JOIN s5vuq_categories AS category ON
catego’ at line 3
任何帮助,将不胜感激。
解决方案
您的问题是错字,但由于您有很多问题,因此我发布了此答案。这是您更正的查询:
CREATE VIEW articles AS
SELECT article.*, category.alias AS category_alias -- I removed a comma here
FROM s5vuq_content AS article
LEFT JOIN s5vuq_categories AS category
ON category.id = article.catid; -- column names don't take single quotes
除了SELECT
语句末尾的悬空逗号之外,您还将子句中的列名放在ON
单引号中。单引号主要用于 SQL 中的字符串文字。如果您需要在 MySQL 中转义列名,您可以使用双引号或反引号。因此,以下两个都应该是有效的:
ON category."id" = article."catid"
ON category.`id` = article.`catid`
推荐阅读
- android - 在 Android 中看不到带有 ArrayAdapter 的 Listview
- cmake - 创建ros包
- sql - 仅选择组的所有元素具有相同值的组
- javascript - Javascript手动复制到剪贴板并单击
- php - Laravel 5.5 中间件不起作用
- c++ - 如何修复“一些带有模板的结构的初始化程序太多”
- php - 如何输出 PHP 数组函数?
- javascript - Waiting for promise to fulfill in Node.js
- vb.net - Authed.io check if user expired or not |VB|
- python-3.x - 如何在jupyter笔记本中绘制一张又一张的图