如何一次为每个 IN 条件选择不同的 id

时间:2021-06-07 18:03:22

标签: mysql

我将如何根据 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)

1 个答案:

答案 0 :(得分:0)

下面写的代码创建

  1. 名为“数据”的表
  2. 表格的内容。

然后选择您要搜索的数据记录。

查询生成以下结果:

<头>
味道 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');