我试图运行此查询的情况,我想删除我保存在表中的最新数据。
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 * 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”。
假设顶部的“日期”是“2012 年 11 月 30 日”。那么您的查询将相当于:
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);