0

我试图运行此查询的情况,我想删除我保存在表中的最新数据。

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

但我得到了这个错误。当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。

4

2 回答 2

4

尝试

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

这个想法是你试图返回一组(1)“ddates”。


解释

假设顶部的“日期”是“2012 年 11 月 30 日”。那么您的查询将相当于:

DELETE from JOBORDER2
Where ddates in ('11/30/2012');

这是有道理的。使用“*”,您试图做一些荒谬的事情。括号中有一个行集,即使只有一行,您处理的也不止一列。您想与哪一列进行比较?

于 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 回答