SQL错误1064:使用包含的语法错误

时间:2018-10-22 05:15:42

标签: sql mysqli mysql-workbench

我正在尝试在查询中使用运算符contains,但出现此错误:

  

错误代码:1064。您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第6行的“包含(从Musicians M2中选择ssn”)附近使用

我的查询应该获取所有名为John的音乐家演奏的所有instrID。表示所有约翰都使用了该乐器。 它说这是一个语法错误,我不知道错误在哪里。 这是我的SQL查询:

select instrID
from Plays P
where (
  select ssn 
  from Musicians M
  where M.ssn = P.ssn
) contains (
  select ssn
  from Musicians M2
  where M.aname = 'John'
)

4 个答案:

答案 0 :(得分:1)

CONTAINS MySQL关键字仅在处理空间数据时适用,因此不适用于当前查询。

我怀疑您真正需要的只是一个简单的连接:

SELECT p.instrID
FROM Plays p
INNER JOIN Musicians m
    ON p.ssn = m.ssn
WHERE m.aname = 'John';

答案 1 :(得分:0)

您可以这样加入:

select p.instrID
from Plays P, Musicians m
where p.ssn = m.ssn
and m.aname = 'John';

根据要求,您可以尝试left outer joinright outer join等。

答案 2 :(得分:0)

您可以做其他情况

Select instrID
from Plays P
where P.ssn in (
  select ssn 
  from Musicians M
  where 
  M.aname='John');

答案 3 :(得分:0)

这很复杂。我将使用group byhaving来解决这个问题:

select p.instrID
from Plays p join
     Musicians m
     on m.ssn = p.ssn
where m.aname = 'John'
group by p.instrID
having count(*) = (select count(*) from Musicians m2 where m2.aname = 'John');

having子句满足所有所有名为“约翰”的音乐家演奏乐器的要求。