我有一个查询,它返回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.
有关如何实现这一目标的任何想法。
由于
千电子伏
答案 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