我试图根据返回数据集中多个列上的条件匹配来缩小现有复杂查询的结果。我将尽可能在这里尽可能简化数据。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