为什么我在mysql中遇到语法错误?

fivyi3re  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(403)
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,说我没有正确的语法。如何解决这个问题?

oewdyzsn

oewdyzsn1#

直接错误似乎是 WHERE Team ID IN ... 实际上应该是 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中使用backticks引用它。但是,你应该避免这样做。

jyztefdp

jyztefdp2#

你的table Team Member 及其列 Member ID 以及 Team ID 可能是说错了。

6ie5vjzr

6ie5vjzr3#

我认为您使用了错误的变量名(memberid),它在member和id之间不应该有空格。请确保列名和表名使用正确的名称。

fcy6dtqo

fcy6dtqo4#

你可以在下面使用join进行尝试

SELECT a.ID, a.Name
    FROM Members a inner join Team b on a.ID=b.MemberID
    inner join Teams c on b.TeamID=c.ID
    where c.Year = 2012 AND c.Country = 'Phillipines'

相关问题