0

このクエリを実行しようとしている状況で、テーブルに保存した最新のデータを削除したいと思います。

DELETE from JOBORDER2 Where ddates in (SELECT TOP 1 * FROM JOBORDER2 Where cjobno = '45' ORDER BY ddates DESC);

しかし、私はこのエラーが発生しました。EXISTSでサブクエリが導入されていない場合、選択リストで指定できる式は1つだけです。

4

2 に答える 2

4

試す

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つしかない場合でも、複数の列を処理していました。どの列と比較したいですか?

于 2012-12-01T02:53:57.323 に答える
3

それは星が好きではありません。試す:

DELETE from JOBORDER2 Where ddates in
      (SELECT TOP 1 ddates 
       FROM JOBORDER2 
       Where cjobno = '45' 
       ORDER BY ddates DESC);
于 2012-12-01T02:54:14.790 に答える