今天在做asp.net的時候遇到了些小問題,有個要求:
新增乙個資料來源控制項,通過多表查詢,找出銷售量在前十的產品。(在salesorderdetail表的orderqty欄位表示訂貨量,希望大家先嘗試自己寫查詢語句,實在沒辦法解決才去看參***。)
有個屁的參***呀!!! 只好自己寫語句,在這過程中複習了很多關於sql語句的知識。
遇到最多的情況就是:
選擇列表中的列 'product.modifieddate' 無效,因為該列沒有包含在聚合函式或 group by 子句中。
這個主要是對group by 的不了解。
網上找到了這樣一段話:
也就是如果要用group by,要顯示的字段就都必須新增到group by 裡面去。
讓我們分析一下group by 的過程:
先執行select 的操作返回乙個程式集,附下午寫的sql語句:--然後去執行分組的操作,這時候他將根據group by 後面的字段
--進行分組,並且將相同的字段並稱一列資料,如果group by 後面沒有這個字段的話就要分成好多的資料。
--但是分組就只能將相同的資料分成兩列資料,而一列中又只能放入乙個字段,所以那些沒有進行分組的
--資料系統不知道將資料放入**,所以就出現此錯誤
select top(10) product.* from product left join salesorderdetail on product.productid= salesorderdetail.productid where( salesorderdetail.productid= any(select top(10) salesorderdetail.productid
from salesorderdetail group by salesorderdetail.productid order by sum(salesorderdetail.orderqty) desc)) group by product.productid,product.name,productnumber,product.color,product.size,product.weight,product.price,product.productsubcategoryid,product.rowguid,product.modifieddate
逗了。。 弄得這麼複雜 應該這樣
select top(10)product.productid, product.name, product.color,unitprice,sum(salesorderdetail.orderqty)as totalorderqty
from product inner join salesorderdetail
on product.productid = salesorderdetail.productid group by product.productid,product.name,product.color,unitprice
order by sum(salesorderdetail.orderqty) desc
MySQL之優化order by和group by
目錄 orderby 優化order by的前提 orderby子句盡量不要產生filesort 如果orderby子句不可避免產生了filesort的優化 總結 groupby 首先我們要做的肯定是把orderby的字段建立成索引 order by盡量使用index方式而不要使用filesort方...
關於sqlserver除錯
現在很多企業使用資料庫內部處理過程進行程式設計。這樣的好處是對後來維護的人員可以方便修改。資料庫指令碼也是解析語句,不用編譯生產exe等檔案,直接可以執行。隨著儲存過程的複雜性越來越大,在除錯的時候也有困難。例如 儲存過程的臨時表如何檢視?1 要在本資料庫伺服器上除錯。不能遠端除錯 2 使用sa和 ...
SQL Server 關於服務賬戶
sql server中的每個服務代表乙個程序或一組程序,每個程序需要有訪問sql server相關檔案 如.mdf ndf 和 ldf 等檔案 或登錄檔或者sql server安裝目錄的許可權。這些服務要在顯示登入界面前就載入完成。為了能讓sql server服務在作業系統中正常的啟動和執行,就需要...