我将如何根据 IN 值选择 Id。基本上我有一个 IN 值列表,但 Id 只想从表中为每个 IN 值选择一个 ID。我希望这听起来不会令人困惑,但我正在努力完成的是这个。
user_id | 味道 | 日期 |
---|---|---|
0 | 香草 | yyyy-mm-dd |
1 | 香草 | yyyy-mm-dd |
2 | 巧克力 | yyyy-mm-dd |
3 | 巧克力 | yyyy-mm-dd |
4 | 焦糖 | yyyy-mm-dd |
5 | 焦糖 | yyyy-mm-dd |
6 | 焦糖 | yyyy-mm-dd |
7 | 香草 | yyyy-mm-dd |
从此列表中,我想提取每种风格 一旦它可以是此处的任何 user_id,我将日期留空,因为我认为这可能是一个很好的字段,可以通过它来查找最近注册的用户并填写了他们最喜欢的口味的调查。 我会使用带有 IN 的 group by 和 Distinct 吗? 类似的东西
$(date)
答案 0 :(得分:0)
下面写的代码创建
然后选择您要搜索的数据记录。
查询生成以下结果:
味道 | user_id | 日期 |
---|---|---|
香草 | 0 | 2021-06-07 20:00:00 |
巧克力 | 2 | 2021-06-06 20:00:00 |
焦糖 | 4 | 2021-06-07 20:00:00 |
CREATE TABLE Data (
user_id INT,
flavor VARCHAR(50),
date TIMESTAMP);
INSERT INTO Data (user_id ,flavor, date) VALUES (0,'Vanilla', '2021-06-07 20:00:00'),
(1,'Vanilla', '2021-06-06 20:00:00'), (2,'Chocolate', '2021-06-06 20:00:00'),
(3,'Chocolate', '2021-06-06 19:00:00'), (4,'Caramel', '2021-06-07 20:00:00'),
(5,'Caramel', '2021-06-06 20:00:00'),
(6,'Vanilla', '2021-06-05 20:00:00'), (7,'Chocolate', '2021-06-05 20:00:00'),
(7,'Vanilla', '2021-06-05 20:00:00') ;
SELECT
d.flavor, d.user_id, d.date
FROM
Data d
INNER JOIN
(SELECT
flavor, MAX(date) AS latestDate
FROM
data
GROUP BY flavor) lD ON ld.flavor = d.flavor
WHERE
d.date = ld.latestDate
AND d.flavor IN ('Vanilla' , 'Chocolate', 'Caramel');