【问题标题】:Selecting rows with unique column values选择具有唯一列值的行
【发布时间】:2020-03-30 19:01:33
【问题描述】:

我正在尝试编写返回 emails 的 SQL 命令,该命令的值 (track openers) 并且没有列 action_type 的值 (redirect)同一张桌子。

email              countrycode    action_type
email1@domain.com  GB             track openers
email1@domain.com  GB             redirect
email2@domain.com  GB             track openers
email2@domain.com  GB             redirect
email3@domain.com  GB             track openers
email3@domain.com  GB             redirect
email4@domain.com  GB             track openers <<

DB Table Screenshot

我已经尝试过了,但没有成功,它继续显示加载...没有返回任何结果

SELECT DISTINCT LOWER(email) as `email`, `action_type`, `countrycode`
FROM `stats`
WHERE `email` NOT IN (SELECT `email` FROM `stats` WHERE `action_type` = 'redirect');

【问题讨论】:

  • DISTINCT 不是函数。它是 SELECT DISTINCT 的一部分,适用于整个选定的行。跳过那些多余的括号,直接写SELECT DISTINCT LOWER(email) as ... 让代码更清晰!
  • 感谢您提供此信息@jarlh,我将编辑我的查询

标签: sql phpmyadmin


【解决方案1】:

我建议聚合:

SELECT LOWER(email) as email
FROM `stats`
WHERE action_type in ('redirect', 'track openers')
GROUP BY LOWER(email)
HAVING MIN(action_type) = MAX(action_type) AND
       MIN(action_type) = 'track openers';

【讨论】:

    【解决方案2】:

    这也是一种选择。在这里,您查找所有电子邮件,其操作类型为track openers,并且不存在redirect 操作类型的操作。

    SELECT LOWER(email)
    FROM stats s
    WHERE s.action_type = 'track openers' AND NOT EXISTS(
        SELECT ss.email
        FROM stats ss
        WHERE s.email = ss.email
        AND ss.action_type = 'redirect'
    );
    

    【讨论】:

    • 感谢您的回答,但它继续显示加载...没有返回任何结果
    • 也许原因是你使用的是mysql,而我用postgres测试过。那是我的疏忽。无论如何,不​​客气!
    【解决方案3】:

    稍微不那么冗长的选项

    SELECT LOWER(email) as email
    FROM `stats`
    WHERE action_type in ('redirect', 'track openers') --optional if there are only 2 types
    GROUP BY email
    HAVING AVG(CASE WHEN action_type ='track openers' THEN 1 END) = 1;
    

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2023-03-31
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多