簡體   English   中英

SQL 查詢多列僅使用一列的不同並使用排序依據

[英]SQL Query Multiple Columns Using Distinct on One Column Only and Using Order By

我試圖從一列中選擇所有不同的名稱,並按另一列 sort_order 對它們進行排序。

我嘗試了幾件事:

select distinct ( name ), sort_order from table1  where active=1 order by sort_order

上面的代碼輸出了兩列,但是,一些重復的名稱具有不同的 sort_order 值並且仍然出現。

select name, sort_order from table1 where
name in (Select min(name) FROM table1 where active=1  group by sort_order )

上面的代碼產生錯誤信息:

ORDER BY 子句在視圖、內聯函數、派生表、子查詢和公共表表達式中無效,除非還指定了 TOP、OFFSET 或 FOR XML。

我嘗試用 group by 替換 order by,但這會以錯誤的順序生成列表。

select distinct name as flavors from table1 where active=1 order by sort_order

上面的代碼產生錯誤信息:

如果指定了 SELECT DISTINCT,則 ORDER BY 項必須出現在選擇列表中。

我需要 name 列來顯示所有不同的名稱,而 sort_order 列應該顯示所有相應的 sort_order 編號(有些可能會重復)。

使用聚合:

select name, max(sort_order)
from z_mflavs 
where active = 1
group by name
order by max(sort_order);  -- or min() or avg()

請注意,在您的查詢中, (name)周圍的括號完全是多余的。 SELECT DISTINCT是 SQL 語言中的一個子句,它適用於所有被選擇的列,無論是否有括號中的表達式。

使用這個查詢...如果你想要名稱的值,sort_order 列

  SELECT name, MAX(sort_order) as sort_order  FROM table1 
               Group by name ORDER BY MAX(sort_order) DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM