在SQL中使用count()= 0

Cod*_*Guy -1 mysql sql

我试图运行以下查询,但得到一个错误:

select S 
from St
where  count(

    select *
    from L
    where L.Wh = S

) = 0
Run Code Online (Sandbox Code Playgroud)

我收到错误:

错误代码1064,SQL状态42000:您的SQL语法中有错误...

我该怎么写这个查询?

Sty*_*xxy 6

您必须在子选择中使用COUNT聚合函数,因此您的子查询返回单个结果.

select S 
from St
where (select COUNT(*)
       from L
       where L.Wh = St.S
      ) = 0
Run Code Online (Sandbox Code Playgroud)

如果要选择"St"中没有"L"中任何记录的所有记录,您还可以使用以下NOT EXISTS()功能:

SELECT S
FROM St
WHERE NOT EXISTS (SELECT 1 FROM L WHERE L.Wh = St.S)
Run Code Online (Sandbox Code Playgroud)


xda*_*azz 6

你可以使用NOT EXISTS条款.

SELECT S
FROM ST
WHERE NOT EXISTS (    
  SELECT *
  FROM L
  WHERE L.Wh = ST.S
)
Run Code Online (Sandbox Code Playgroud)