MySQL排除查询-排除查询一个表在另一个表中存在的数据

排除查询一个表在另一个表中存在的数据
例如:

  • 任务完成后列表中不再显示该任务
  • 任务领取后的记录表中存在的数据,在任务列表里不在显示
  • task 任务表、task_sign 任务记录表
SELECT
*
FROM
    `sz_task`
WHERE
    AND (
        SELECT 
            count( * ) AS num 
        FROM 
            sz_task_sign 
        WHERE 
            `sz_task`.id = `sz_task_sign`.task_id AND STATUS = '3'
        AND user_id = 1
    ) = 0 

注意:

  • 如果子查询中的 ( SELECT count( * ) AS num FROM sz_task_sign WHERE sz_task.id = sz_task_sign.task_id AND STATUS = '3' AND user_id = 1 ) = 1 则条件刚好相反

仅有一条评论

添加新评论