首页 > 解决方案 > “USING”语句MYSQL缺少右括号错误

问题描述

Syntax error: missing 'closing parenthesis'当我在USING语句中添加说明符时得到一个

这是一个类似于我正在做的例子:

SELECT * FROM student s JOIN test_result using (s.id) where s.id = 1335;

我的实际查询要复杂得多,我有多个要加入的表,并且一些表具有相同名称的列,因此当我尝试JOIN使用第三个表访问其中一个表时,我得到一个Error Code: 1052. Column 's.id' in from clause is ambiguous. 当我试图通过指定id要使用的表来避免这种情况时,我得到一个Syntax error: missing 'closing parenthesis'

标签: mysqlsqljoinselect

解决方案


子句中的列USING()不采用别名 - 基本思想是该列应该在两个表中都可用。

这还具有消除列歧义的优点,因此您不需要在子句中使用表别名作为前缀WHERE

只是:

SELECT * 
FROM student s 
INNER JOIN test_result ts USING (id) 
WHERE id = 1335;

缺点是,如果您在多个表都有一个列的多连接上下文中使用它id,您将无法选择选择哪个id。在某些情况下,这可能很麻烦。在这种情况下,您需要切换回join ... on ...语法:

SELECT * 
FROM student s 
INNER JOIN test_result ts on ts.id = s.id
WHERE id = 1335;

推荐阅读