[英]Return rows with the highest value on one column corresponding to a given value in another
有一個名為raw_contacts的MySQL表,其結構如下:
ID (primary auto-increment, int)
PHONE (composite unique with NAME, varchar)
NAME (composite unique with PHONE, varchar)
FREQUENCY (int)
Composite unique key is named PHONENUM
我正在嘗試編寫查詢以返回FREQUENCY列中具有PHONE的任何給定值的對應值最高的行。 我確實找到了相關的帖子,但是接受的答案對我的情況不起作用,因為我有兩列的復合鍵來進行檢查。
僅作說明,請考慮以下示例:
1 1234 John 6
2 1234 Dave 2
3 2199 Bill 9
4 1878 Dani 3
5 1234 Cory 7
6 1234 Gore 5
7 3319 Cory 1
在上面的示例中針對1234運行,查詢應返回第5行,因為Cory在FREQUENCY列中具有該編號的最高計數。
這是我想出的,效果很好:
select RC.ID, RC.PHONE, RC.FREQUENCY, RC.NAME
from `raw_contacts` RC
inner join(
select PHONE, max(FREQUENCY) FREQUENCY
from `raw_contacts`
where PHONE="11111"
group by PHONE
) RC2 on RC.PHONE = RC2.PHONE and RC.FREQUENCY = RC2.FREQUENCY
limit 1
由於此任務需要在具有數百萬條記錄的表上以很高的頻率運行,因此是否還有其他資源友好的查詢? 我正在尋找最優化的方法!
PS如果排位賽超過一排,我只需要其中一排,那沒關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.