2015-05-29 42 views
0

我有以下設置:如何查詢唯一列,根據另一列的值有條件地選擇哪一行?

date | event | hits 

Jan | A | 0 
Jan | B | 2 
Jan | C | 0 
Feb | A | 4 
Feb | B | 0 
Feb | C | 0 

而且我在尋找返回的查詢:

  • 活動是唯一的(只返回[一月| B | X][二月| B | X],而不是兩個)
  • 優先化命中(所以[一月| B | 2]節拍[二月| B | 0]
  • 其次優先考慮最近的日期([Feb | C | 0] beats [Jan | C | 0]

我希望對於上述表查詢返回:

Feb | A | 4 
Jan | B | 2 
Feb | C | 0 

回答

1
SELECT 
(select edate from stuff sx where s.event=sx.`Event` ORDER BY sx.hits DESC,sx.edate DESC limit 1) date, 
s.event, (select hits from stuff sx where s.event=sx.`Event` ORDER BY sx.hits DESC,sx.edate DESC limit 1) hits 
FROM stuff s 
GROUP BY Event 
order by event 

表東西EDATE字段被定義爲日期。 對於大型表格不是非常有效,但很有效。

相關問題