このクエリを実行しようとしている状況で、テーブルに保存した最新のデータを削除したいと思います。
DELETE from JOBORDER2 Where ddates in (SELECT TOP 1 * FROM JOBORDER2 Where cjobno = '45' ORDER BY ddates DESC);
しかし、私はこのエラーが発生しました。EXISTSでサブクエリが導入されていない場合、選択リストで指定できる式は1つだけです。
このクエリを実行しようとしている状況で、テーブルに保存した最新のデータを削除したいと思います。
DELETE from JOBORDER2 Where ddates in (SELECT TOP 1 * FROM JOBORDER2 Where cjobno = '45' ORDER BY ddates DESC);
しかし、私はこのエラーが発生しました。EXISTSでサブクエリが導入されていない場合、選択リストで指定できる式は1つだけです。
試す
DELETE from JOBORDER2
Where ddates in (
SELECT TOP 1 ddates
FROM JOBORDER2
Where cjobno = '45'
ORDER BY ddates DESC);
アイデアは、(1)「日付」のセットを返そうとしているということです。
上位の「日付」が「2012年11月30日」だったとしましょう。その場合、クエリは次のようになります。
DELETE from JOBORDER2
Where ddates in ('11/30/2012');
これは理にかなっています。「*」を使用すると、無意味なことをしようとしていました。括弧内に行セットがあり、行が1つしかない場合でも、複数の列を処理していました。どの列と比較したいですか?
それは星が好きではありません。試す:
DELETE from JOBORDER2 Where ddates in
(SELECT TOP 1 ddates
FROM JOBORDER2
Where cjobno = '45'
ORDER BY ddates DESC);