首页 > 解决方案 > 为什么我在 mysql 中收到语法错误?

问题描述

SELECT ID, Name
FROM Members
WHERE ID IN 
    (SELECT Member ID 
     FROM Team Member 
     WHERE Team ID IN 
          (SELECT ID 
            FROM Teams 
            WHERE Year = 2012 AND Country = 'Phillipines'))

当我将此查询输入 phpmyadmin 时,我收到错误 #1064 说我没有正确的语法。如何解决这个问题?

标签: mysqlsql

解决方案


直接错误似乎是WHERE Team ID IN ...which 实际上应该是WHERE TeamID IN .... 还有其他类似的错误。但是,我们可以尝试使用连接重写您的查询,使其更具可读性和可维护性:

SELECT m.ID, m.Name
FROM Members m
INNER JOIN TeamMember tm
    ON m.ID = tm.MemberID
INNER JOIN Teams t
    ON tm.TeamID = t.ID
WHERE
    t.Year = 2012 AND t.Country = 'Phillipines';

通常,SQL 中的标识符必须是一个没有任何空格的单词。如果Team ID实际上是一个列名,那么您必须在 MySQL 中使用反引号来引用它。但是,您应该避免这样做。


推荐阅读