[英]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.