首页 > 解决方案 > 如何通过在 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

任何帮助,将不胜感激。

标签: mysql

解决方案


您的问题是错字,但由于您有很多问题,因此我发布了此答案。这是您更正的查询:

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`

推荐阅读