mysql查询找出不存在的用户

时间:2012-11-02 01:07:40

标签: mysql join

我正在玩2个数据库表。一个是用户表,其中包含用户详细信息,如全名和活动(无论用户是否处于活动状态)列。另一个是任务表,其中包含每个用户的任务详细信息。因此,tasks表包含名为UserID和StartTime的列。以下查询将显示昨天输入任务的所有用户详细信息。

$today = mktime(0,0,0);
$yesterday = $today - 86400;
$res = $db->fetchAll("SELECT DISTINCT tasks.UserID,user.full_name FROM `tasks` JOIN `user` ON tasks.UserID=user.id WHERE user.active=1 AND tasks.StartTime > ".$db->quote($yesterday,'integer')." AND tasks.StartTime < ".$db->quote($today,'integer'));

我需要找出昨天没有输入任务的用户详细信息。如何修改上述查询?

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

SELECT DISTINCT tasks.UserID, user.full_name FROM `user` LEFT JOIN `tasks` 
ON user.id=tasks.UserID WHERE user.active=1 AND tasks.StartTime = NULL;

MySQL在任务表中找不到用户时应该返回NULL。

答案 1 :(得分:0)

如何在加入之前从任务表中获取昨天的记录?

"SELECT DISTINCT tasks.UserID, user.full_name FROM `user` LEFT JOIN (
    select * from `tasks` where tasks.StartTime > ".$db->quote($yesterday,'integer')."
    ) `tasks_from_yesterday` 
    ON user.id=tasks_from_yesterday.UserID WHERE user.active=1 AND tasks_from_yesterday.StartTime = NULL"
相关问题