比较两个表并获得其中一个表的结果

时间:2018-07-24 12:28:25

标签: mysql compare

我有两个桌子。一张表包含所有用户信息。另一个表包含用户每次登录我们系统的记录。 我需要显示的是有多少用户未登录系统。

我们有1613条记录。在给定时间段内登录262个用户。比较查询应显示差异,但我的查询不显示。它返回411(这是从哪里来的,我不知道)我显然做错了。

这是我的查询。

 SELECT s.id 
,s.first_name 
, s.surname 
, s.email 
, s.`Status`
,date_format(s.subscription_start_date,'%Y-%m-%d %H:%i') as subscription_start 
,date_format(s.subscription_expiry_date,'%Y-%m-%d %H:%i') as subscription_expiry 
FROM user s LEFT JOIN user_log eul ON s.id=eul.userid 
WHERE eul.userid IS NULL
and (s.status = 'Live' and s.activated = 1) 
and s.payment > 0 
and s.subscription_start_date < now() 
and s.subscription_expiry_date > now()

我希望这是有道理的。

好的。 以下是更新的信息

这是原始查询。这将撤回所有已登录我们系统的人员。他们的名字旁边有一个计数。此数据适用于六月。我需要知道谁在六月内没有登录。这有道理吗?

select 
s.first_name 
, s.surname 
, s.email 
,date_format(s.subscription_start_date,'%Y-%m-%d %H:%i') as subscription_start 
,date_format(s.subscription_expiry_date,'%Y-%m-%d %H:%i') as subscription_expiry 
, count(*) as count 
, concat(year(eul.date_created), '-', lpad(month(eul.date_created), 2, 0)) as date 
from user_log eul 
INNER join user s on (s.id = eul.userid) 
Where s.payment > 0 and s.subscription_start_date <= {d '2018-06-30'} and s.subscription_expiry_date > now() 
and (s.status = 'Live' and s.activated = 1) 
and eul.date_created >= {d '2018-06-01'} 
and eul.date_created <= {d '2018-06-30'} 
group by email, concat(year(eul.date_created), '-', lpad(month(eul.date_created), 2, 0)) 

先谢谢。 安德里亚

0 个答案:

没有答案