我有以下SQL Server 2008的表:计数更新的记录
CREATE TABLE tbl (ID INT, dtIn DATETIME2, dtOut DATETIME2, Type INT, nID INT)
INSERT tbl VALUES
(1, '05:00', '10:00', 1, 1), --will be changed
(2, '08:00', '16:00', 2, 1),
(3, '02:00', '08:00', 1, 1), --will be changed
(4, '07:30', '11:00', 1, 1)
,我用下面的SQL来更新部分重叠记录:
UPDATE tbl
SET dtOut = COALESCE((
SELECT MIN(dtIn)
FROM tbl as t2
WHERE t2.type = tbl.type AND
t2.id <> tbl.id AND
t2.dtIn >= tbl.dtIn AND t2.dtIn < tbl.dtOut
), dtOut)
WHERE nID=1;
SELECT ROWCOUNT_BIG();
用最后一个SELECT认为检索更新的记录数,但它不起作用。
所以我的问题是,我该如何重写这个语句来获取实际更新的记录数? (在上面的数据表中有2个)。
+1使用这样的别名加入表本身就是很酷 – whytheq 2012-07-22 18:45:51
@whytheq:谢谢。别名可能很酷......它并不完全给我我想要的东西。 – ahmd0 2012-07-23 18:39:18