請問各位大神:
假設我目前所下語法及結果如下,要如何篩選條件只顯示第二張表格的內容呢(相同的permission就不顯示,只顯示不同的,且僅A有或僅B有都要顯示)
使用資料庫為SQL SERVER,還請協助指點,謝謝
SELECT * FROM test
↑圖一
↑圖二
只想抓出沒有重複permission可以使用group by permission having count(1) = 1
select max(name) as name,permission
from test
group by permission having count(1) = 1
想請問having count(1) = 1 括號裡面及等號後方的1代表什麼呢?據我了解括號裡的1是因為欄位名稱permission在第二欄(陣列方式從0起算);等號外的1就比較不太清楚,是只顯示出現1次的值? 方便的話還請您指點,非常感謝!
count函數假如裡面有非null的值一列會+1
,所以使用count(1)
可以避免null情況,始終+1
舉例,以下表格查詢select count(val) from T
結果會是3因為只有三列有值
表格 T 結構 :
Val
1
null
2
3
等號外的1就比較不太清楚,是只顯示出現1次的值
having是集合條件篩選概念,代表只要集合數量=1
的結果