gpt4 book ai didi

mysql - 返回具有特定条件的最早记录 MYSQL

转载 作者:行者123 更新时间:2023-11-29 11:56:30 25 4
gpt4 key购买 nike

我正在尝试从与此示例类似的数据中获取最早的记录:

user_id Criteria_1  Criteria_2  Date
1 1 1 1/1/2015
1 0 1 2/1/2015
1 1 0 3/1/2015
2 0 0 1/1/2015
2 0 1 2/1/2015
2 1 0 3/1/2015

期望的结果:

user_id Criteria_1  Criteria_2  Date
1 1 1 1/1/2015
2 0 1 2/1/2015

a.) user_id 应该是唯一的b.) 应满足 Criteria_1 和 Criteria_2 中的一个或两个c.) 最早日期

最佳答案

这是 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 |
+---------+-------------+-------------+------------+

关于mysql - 返回具有特定条件的最早记录 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com