-1

次のクエリを実行しようとしていますが、エラーが発生します。

select S 
from St
where  count(

    select *
    from L
    where L.Wh = S

) = 0

エラーが発生します:

エラー コード 1064、SQL 状態 42000: SQL 構文にエラーがあります...

このクエリをどのように記述できますか?

4

4 に答える 4

6

サブセレクト内で COUNT 集計関数を使用する必要があるため、サブクエリは単一の結果を返します。

select S 
from St
where (select COUNT(*)
       from L
       where L.Wh = St.S
      ) = 0

"L" にレコードがない "St" のすべてのレコードを選択する場合は、次のNOT EXISTS()関数も使用できます。

SELECT S
FROM St
WHERE NOT EXISTS (SELECT 1 FROM L WHERE L.Wh = St.S)
于 2012-10-25T06:49:29.893 に答える
6

NOT EXISTS句を使用できます。

SELECT S
FROM ST
WHERE NOT EXISTS (    
  SELECT *
  FROM L
  WHERE L.Wh = ST.S
)
于 2012-10-25T06:52:02.537 に答える
2

このようにしてみてください

 select s from st
   where (select count(*) from L where l.wh=s)=0
于 2012-10-25T06:49:49.300 に答える
1

別のオプションは、次を使用していjoinます。

select S from St
left join L on St.S = L.Wh
where L.Wh is null

作業例: http://sqlfiddle.com/#!2/d3c23/2

個人的には、通常は結合を好みますが、さらに別のオプションを使用することもできますnot in:

select S from St
where S not in (select Wh from L)

例: http://sqlfiddle.com/#!2/d3c23/3

于 2012-10-25T06:53:00.893 に答える