日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

發布時間:2025/3/21 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?今天用SQL Server嘗試實現一個SQL語句的時候,報了如標題所示的錯誤,通過在百度里面搜索,并親自動手實現,終于發現問題所在,現在把它記錄下來。

  語句如下:

  select [OrderID],[ProductID], min(UnitPrice) as MinUnitPrice into NewDetails FROM [Northwind].[dbo].[Order Details] Group by [OrderID]

  執行該語句之后,SQL Server報錯如下:

??? “消息 8120,級別 16,狀態 1,第 1 行選擇列表中的列 'Northwind.dbo.Order Details.ProductID' 無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中。”

  正確的語句應該是這樣的:

  select [OrderID],[ProductID], min(UnitPrice) as MinUnitPrice into NewDetails FROM [Northwind].[dbo].[Order Details] Group by [OrderID],[ProductID]

  之所以應該這樣寫,是由Group By子句決定的。下面是從MSDN中找到的關于Group By的一些知識。

  Group的作用:

  指定由查詢表達式(Select)返回的對象要分入的組。

  [ GROUP BY aliasedExpression [ ,...? n ] ]?

  參數:

  aliasedExpression

  要對其執行分組的任何有效查詢表達式。expression可以是屬性或者是引用 FROM 子句所返回的屬性的非聚合表達式。 GROUP BY 子句中的每一個表達式的求值結果必須為可比較相等性的類型。這些類型通常為標量基元類型,如數字、字符串和日期。不可按集合分組。備注:

  如果 SELECT 子句 <select list> 中包含聚合函數,則 GROUP BY 將計算每個組的匯總值。指定 GROUP BY 時,選擇列表中任何非聚合表達式內的每個屬性名都應包含在GROUP BY列表中,或者GROUP BY表達式必須與選擇列表表達式完全匹配。

  使用Group By子句的時候,一定要記住下面的一些規則:

  (1)不能Group By非標量基元類型的列,如不能Group By text,image或bit類型的列;

  (2)Select指定的每一列都應該出現在Group By子句中,除非對這一列使用了聚合函數;

  (3)不能Group By在表中不存在的列;

  (4)進行分組前可以使用Where子句消除不滿足條件的行;

  (5)使用Group By子句返回的組沒有特定的順序,可以使用Order By子句指定次序。

  文章轉載:http://www.cnblogs.com/superhuake/archive/2012/07/18/2598171.html。感謝Core Hua分享。

轉載于:https://www.cnblogs.com/bjxingch/articles/6807566.html

總結

以上是生活随笔為你收集整理的选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。