進入正題,準備我們的測試資料
1.我們要篩選的資料為去除 gx 列的重複項 並將所有資料展示出來,如圖所示:
2.這種情況下我們是不可以使用distinct來去重的,我們可以來嘗試一下:
首先,單純的查詢 gx 這一列用 distinct 是沒有任何問題的
但是如果我們加上表中其它資料的話,我們來看看效果:
很顯然,結果發現不是我們想要的資料。
3.這個時候我們既想要去重,又想要去重後的資料,我們可以這樣:
這就是將gx過濾去重後查詢到的所有資料了。
備註: ①.exists (sql 返回結果集為真) not exists(sql 不返回結果集為真(或返回結果集為假))
②.exists表示存在量詞:帶有exists的子查詢不返回任何記錄的資料,只返回邏輯值「true」或「false」
③.相關子查詢執行過程:先在外層查詢中取「[peoplecount]表」的第一行記錄,用該記錄的相關的屬性值(在內層where子句中給定的)處理內層查詢,若外層的where子句返回「true」值,則這條記錄放入結果表中。然後再取下一行記錄;重複上述過程直到外層表的記錄全部遍歷一次為止。
④.exists語句不關心子查詢的具體內容,因此用「select *」,「exists + 子查詢」用來判斷該子查詢是否返回記錄。
⑤.exists:若子查詢的結果集非空時,返回「true」;若子查詢的結果集為空時,返回「false」 。
not exists :若子查詢結果為空,返回「true」值;若子查詢的結果集非空時,返回 「false。
4.對查詢到的結果(dj列) 如果在不為空的情況下進行求和:
1 select2 isnull((select sum(dj) as countnum from [peoplecount] t where type = 1 and t.procedureid='8334' and not exists
3 (select 1 from [peoplecount] where procedureid='8334' and gx=t.gx and countid>t.countid)),0) as 求和結果
備註:①.isnull(引數1,引數2),判斷引數1是否為null,如果是,返回引數2,否則返回引數1。
②.
sum()
函式用於計算一組值或表示式的總和,sum()
函式的語法如下:sum(distinct expression)
到此結束,感謝各位~
**:
C DataTable 某一列求和
c datatable 某一列求和 1.列為數字型別double total convert.todouble datatable.compute sum 需要求和的引數 2.列為string 型別 先轉為數字型別 再求和 遇到是採用了這個方法 會報錯,加using system.linq 命名空間...
MySQL 某一列累加
形如這樣的 利用變數 sumsalary sumsalary salary,進行累加,但是別忘記初始化變數 select sumsalary 0 來個例項,某客網的mysql題目 60 按照salary的累計和running total,其中running total為前n個當前 to date 9...
mysql update更新某一列為另一列
update sys user set new field old field 將同乙個表中兩個型別一樣的字段的值互換 update t user u1,t user u2 set u1.signed time u2.create time,u2.create time u1.signed time...