Это наиболее часто задаваемый вопрос под mysql
теге, но эй, это медленный день ...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(user_id INT NOT NULL
,Criterion_1 TINYINT NOT NULL
,Criterion_2 TINYINT NOT NULL
,Date DATE NOT NULL
,PRIMARY KEY(user_id,date)
);
INSERT INTO my_table VALUES
(1,1,1,'2015-01-01'),
(1,0,1,'2015-01-02'),
(1,1,0,'2015-01-03'),
(2,0,0,'2015-01-01'),
(2,0,1,'2015-01-02'),
(2,1,0,'2015-01-03');
SELECT * FROM my_table;
+---------+-------------+-------------+------------+
| user_id | Criterion_1 | Criterion_2 | Date |
+---------+-------------+-------------+------------+
| 1 | 1 | 1 | 2015-01-01 |
| 1 | 0 | 1 | 2015-01-02 |
| 1 | 1 | 0 | 2015-01-03 |
| 2 | 0 | 0 | 2015-01-01 |
| 2 | 0 | 1 | 2015-01-02 |
| 2 | 1 | 0 | 2015-01-03 |
+---------+-------------+-------------+------------+
SELECT user_id
, MIN(date) min_date
FROM my_table
WHERE 1 IN (Criterion_1,Criterion_2)
GROUP
BY user_id;
+---------+------------+
| user_id | min_date |
+---------+------------+
| 1 | 2015-01-01 |
| 2 | 2015-01-02 |
+---------+------------+
SELECT a.*
FROM my_table a
JOIN
(SELECT user_id
, MIN(date) min_date
FROM my_table
WHERE 1 IN (Criterion_1,Criterion_2)
GROUP
BY user_id
) b
ON b.user_id = a.user_id
AND b.min_date = a.date;
+---------+-------------+-------------+------------+
| user_id | Criterion_1 | Criterion_2 | Date |
+---------+-------------+-------------+------------+
| 1 | 1 | 1 | 2015-01-01 |
| 2 | 0 | 1 | 2015-01-02 |
+---------+-------------+-------------+------------+
'FROM table_name' отсутствует в запросе. – Wanderer