我有一个查询,它显示了这个月没有创建项目的客户。
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
现在我想按城市过滤它们。我尝试了不同的方法,但都不起作用。
有什么想法吗?
谢谢
发布于 2019-05-23 22:25:53
从你的问题和例子中,我想出了这个...试一试,看看这是不是你想要的。
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'发布于 2019-05-23 22:28:57
有许多方法可以实现这一点。这里有一个:
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'为例,但您可以根据需要输入任何值。
发布于 2019-05-23 22:25:46
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'https://stackoverflow.com/questions/56277272
复制相似问题