【发布时间】:2012-07-20 04:15:15
【问题描述】:
我在 SQL Server 2008 中有下表:
CREATE TABLE tbl (ID INT, dtIn DATETIME2, dtOut DATETIME2, Type INT)
INSERT tbl VALUES
(1, '05:00', '6:00', 1),
(2, '05:00', '7:00', 1),
(3, '05:01', '8:00', 1),
(4, '05:00', '8:00', 1),
(5, '05:00', '6:00', 2),
(6, '05:00', '7:00', 2)
选择相同类型的所有记录的ID,具有相同的dtIn日期,按stOut升序排列:
SELECT DISTINCT tbl.id FROM tbl
LEFT JOIN tbl AS t1
ON tbl.type = t1.type AND
tbl.dtIn = t1.dtIn
ORDER BY tbl.dtOut ASC
但它给了我一个错误:
如果 SELECT DISTINCT 是 ORDER BY 项目必须出现在选择列表中 指定
我尝试将 ORDER BY 放在不同的地方,但似乎都不起作用。我在这里做错了什么?
【问题讨论】:
-
正如错误消息中明确指出的:如果您使用的是
SELECT DISTINCT,那么ORDER BY子句中指定的列也必须出现在所选列的列表中——所以请使用SELECT DISTINCT tbl.id, tbl.dtOut FROM .....跨度> -
哦。我知道了。所以我也必须选择它们。嗯...有趣的要求...但是,哦,好吧...
标签: sql sql-server tsql sql-order-by distinct