MSSQL选择区别和排序

时间:2014-03-25 10:48:39

标签: sql sql-server

我有一个查询,它返回2列上的不同记录,但是我需要对这2个列和1个附加列进行排序。 当我尝试下面的SQL时,我得到错误。

SQL:

SELECT DISTINCT vers, revs FROM tblMVer 
WHERE mid = 194 ORDER BY date_deployed DESC, vers DESC, revs DESC

错误:

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

有关如何实现这一目标的任何想法。

由于

千电子伏

5 个答案:

答案 0 :(得分:2)

你不能仅仅因为它们与我不同而按日期排序。 但如果您将采取最后日期,您可以这样做:

SELECT vers, revs 
FROM (
    SELECT MAX(date_deployed) AS d, vers, revs 
    FROM tblMVer 
    WHERE mid = 194 
    GROUP BY vers, revs 
    ORDER BY d DESC, vers DESC, revs DESC
) AS temp

答案 1 :(得分:1)

选择

中没有 date_deployed

试试这个

SELECT DISTINCT vers, revs
FROM tblMVer 
WHERE mid = 194 
ORDER BY vers,revs DESC

但仍想按date_deployed

订购

试试这个

SELECT vers, revs
FROM
(
    SELECT DISTINCT vers, revs,date_deployed 
    FROM tblMVer 
    WHERE mid = 194 
    ORDER BY vers,revs,date_deployed  DESC
) AS S

答案 2 :(得分:1)

Order By子句只能包含那些被选中的字段,因此为了在date_deployed上使用order by,请将它添加到select语句中。

答案 3 :(得分:1)

如果所有列的顺序相同,则不需要,如果这些列的顺序不同,则需要指定

SELECT DISTINCT vers, revs FROM tblMVer 
WHERE mid = 194 ORDER BY  vers , revs DESC

答案 4 :(得分:0)

执行以下查询以获得结果

SELECT DISTINCT tblMVer.vers,
tblMVer.revs 
FROM tblMVer 
WHERE mid = 194 
ORDER BY tblMVer.date_deployed DESC, 
tblMVer.vers DESC, 
tblMVer.revs DESC