簡體   English   中英

如何查詢唯一列,有條件地根據另一列的值選擇哪一行?

[英]How can I query unique columns, conditionally choosing which row based on another column's value?

我有以下設置:

date | event | hits

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

我正在尋找返回的查詢:

  • 事件是唯一的(僅返回[Jan | B | x][Feb | B | x] ,而不同時返回兩者)
  • 優先擊打(因此[Jan | B | 2][Feb | B | 0]
  • 其次優先處理最近的日期( [Feb | C | 0]個節拍[Jan | C | 0]

我希望對上表的查詢返回:

Feb | A | 4
Jan | B | 2
Feb | C | 0
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

表填充日期字段定義為日期。 對於大表不是很有效,但是可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM