用于删除顶部项的 SQL 查询



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

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

但是我得到了这个错误。当子查询未随 EXISTS 一起引入时,只能在选择列表中指定一个表达式。

尝试

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

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

<小时 />

解释

让我们假设顶部的"日期"是"11/30/2012"。然后,您的查询将等效于:

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

这是有道理的。用"*",你试图做一些无意义的事情。括号中有一个行集,即使只有一行,您也要处理多列。您要与哪一列进行比较?

它不喜欢星星。尝试:

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

最新更新