[SQL ] 如何在篩選條件中加入某欄位不重複的資訊
問題可能有點小複雜:
我有一個 table 叫做 ULM
ULM 裡面有一個欄位是 note
#### 和 @ 基本上沒什麼問題可以不必理會
ULM 裡面每個使用者的一些紀錄,這句 query
的目的是要計算在 f=@ 和 c_id=#### 的條件下
哪一個 u_id 擁有最多筆資料,主要是取出
最多筆的是多少,而不是要知道哪個 u_id
select COUNT(u_id) as len
from ULM
where c_id = ####
and f = @
and u_id in
(
'AAA' , 'BBB' , 'CCC'
)
group by u_id
order by len DESC
(之後再取得第一筆資料就知道是多少了)
我現在想要的部份是,在計算每個 u_id 有幾筆資料的時候
要排除掉 note 裡面資料相同的部分
舉個例子
原本的 query 到最後取出的值是 6,因為 D 和 A 各有六筆資料
(參考底下白字的部份)
可是我要在計算數量的時候,把 note 重複的部份排除
也就是紅色字的部份我是不要的,那麼計算出來的
就應該要是 5 (因為 D 的資料有 5 筆)
那我該怎麼在這個 query 裡面加上條件呢?
謝謝!!
u_id note
--------------
A 1
A 2
A 3
A 4
A 4 <-- 不算
A 4 <-- 不算
B 11
B 12
B 13
B 14
C 21
C 22
C 23
C 24
D 31
D 32
D 33
D 34
D 35
D 35 <-- 不要
因為這個 query 不是我自己寫的,是接手寫的頁面
要以這個為基礎下去改...
之前試過 DISTINCT,可是這好像只針對要取出的資料
可是 note 不是我要取出的資料...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.80.153
推
07/06 16:34, , 1F
07/06 16:34, 1F
※ 編輯: darkk6 來自: 122.123.80.153 (07/06 16:37)
→
07/06 16:41, , 2F
07/06 16:41, 2F
推
07/08 08:38, , 3F
07/08 08:38, 3F
→
07/08 08:42, , 4F
07/08 08:42, 4F