首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >展示具体城市本月尚未创建项目的用户

展示具体城市本月尚未创建项目的用户
EN

Stack Overflow用户
提问于 2019-05-23 22:18:04
回答 5查看 50关注 0票数 2

我有一个查询,它显示了这个月没有创建项目的客户。

代码语言:javascript
运行
复制
SELECT u.userName
FROM (SELECT DISTINCT userName FROM projects) u
LEFT JOIN projects p
    ON u.userName = p.userName AND
       MONTH(p.date) = MONTH(CURRENT_DATE()) AND
       YEAR(p.date) = YEAR(CURRENT_DATE())
WHERE
    p.userName IS NULL

实例:http://sqlfiddle.com/#!9/53de526/5

现在我想按城市过滤它们。我尝试了不同的方法,但都不起作用。

有什么想法吗?

谢谢

EN

回答 5

Stack Overflow用户

发布于 2019-05-23 22:25:53

从你的问题和例子中,我想出了这个...试一试,看看这是不是你想要的。

代码语言:javascript
运行
复制
SELECT u.userName, u.city
FROM (SELECT DISTINCT userName, city FROM projects) u
LEFT JOIN projects p
    ON u.userName = p.userName AND
       MONTH(p.date) = MONTH(CURRENT_DATE()) AND
       YEAR(p.date) = YEAR(CURRENT_DATE())      
WHERE
    p.userName IS NULL
    and u.city = 'Paris'
票数 1
EN

Stack Overflow用户

发布于 2019-05-23 22:28:57

有许多方法可以实现这一点。这里有一个:

代码语言:javascript
运行
复制
SELECT
  p.*
FROM
  projects AS p
  INNER JOIN
  (
    SELECT
      userName
      ,MAX(date) AS max_date
    FROM 
      projects p
    GROUP BY
        userName
    HAVING
      max_date < DATE_FORMAT(CURRENT_DATE, '%Y-%m-01')
  ) AS mp
  ON p.userName = mp.userName AND p.date = mp.max_date
WHERE
  p.city = 'Bordeaux'

这将查找date的最大值,过滤当月未出现的值,并将结果连接回原始表,然后在原始表中过滤city。我以'Bordeaux'为例,但您可以根据需要输入任何值。

票数 1
EN

Stack Overflow用户

发布于 2019-05-23 22:25:46

代码语言:javascript
运行
复制
SELECT u.userName, u.city
        FROM (SELECT DISTINCT * FROM projects) u
        LEFT JOIN projects p
            ON u.userName = p.userName AND
               MONTH(p.date) = MONTH(CURRENT_DATE()) AND
               YEAR(p.date) = YEAR(CURRENT_DATE())      
        WHERE
            p.userName IS NULL AND u.city='Paris'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56277272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档