我正在尝试在查询中使用运算符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'
)
答案 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 join
,right 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 by
和having
来解决这个问题:
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
子句满足所有所有名为“约翰”的音乐家演奏乐器的要求。