情况 我尝试运行此查询,我想删除保存在 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);