我試圖根據返回數據集中多個列上的條件匹配來縮小現有複雜查詢的結果。我將盡可能在這裏儘可能簡化數據。MySQL - 根據兩列的重複排除select中的行
假設下面的表結構代表了我現有的複雜的查詢已經選擇的數據(由date
這裏訂購):我需要從基於以下標準的數據集選擇
+----+-----------+------+------------+
| id | remote_id | type | date |
+----+-----------+------+------------+
| 1 | 1 | A | 2011-01-01 |
| 3 | 1 | A | 2011-01-07 |
| 5 | 1 | B | 2011-01-07 |
| 4 | 1 | A | 2011-05-01 |
+----+-----------+------+------------+
:
- 如果
remote_id
和type
配對是唯一的一套,返回總是排 - 如果配對和
type
是不獨特的一套,採取以下行動:- 套行對其中的
remote_id
和type
配對不是唯一的,返回僅單行爲其date
是最大且仍然現在小於或等於。
- 套行對其中的
所以,如果今天是2011-01-10
,我想在數據集中返回的是:
+----+-----------+------+------------+
| id | remote_id | type | date |
+----+-----------+------+------------+
| 3 | 1 | A | 2011-01-07 |
| 5 | 1 | B | 2011-01-07 |
+----+-----------+------+------------+
對我有沒有運氣包裹我的頭圍繞這一某種原因。我懷疑答案在於group by
的良好應用,但我無法理解它。任何幫助是極大的讚賞!
你說非獨特的行,你想返回最大的日期,但仍然<=現在。您爲A類拉的日期大於您爲「今日」指定的日期。 – 2011-01-07 18:54:54
我的錯誤!我忘了是2011年;)更正了OP。 – 2011-01-07 18:59:02