Mysql 如何使用JOIN和WHERE语句筛选记录?

Mysql 如何使用JOIN和WHERE语句筛选记录?,mysql,join,filter,Mysql,Join,Filter,我的问题 SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation FROM table1 INNER JOIN table2 ON table1.userid = table2.userid INNER JOIN table3 ON table2.userid = table3.userid INNER JOIN table4 ON table4.userid = table4.userid

我的问题

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation
   FROM table1
INNER JOIN table2 ON table1.userid = table2.userid
INNER JOIN table3 ON table2.userid = table3.userid
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position
**LEFT JOIN vacation on vacation.userid = table1.userid
WHERE vacation.userid IS NULL**;
这将选择用户ID不在休假表中的所有位置


现在,我需要检查userid是否在休假表中,并且如果此
userid
vacation.status=1
仍应显示在查询中。

如果这是一个单独的查询/要求,则以下查询将起作用:

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation
   FROM table1
INNER JOIN table2 ON table1.userid = table2.userid
INNER JOIN table3 ON table2.userid = table3.userid
INNER JOIN table4 ON table4.userid = table4.userid 
INNER JOIN vacation on vacation.userid = table1.userid
LEFT JOIN table5 ON table1.name = table5.position
WHERE vacation.status = 1;
如果您同时需要这两个要求(userid为NULL或status=1),请尝试以下操作:

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation
   FROM table1
INNER JOIN table2 ON table1.userid = table2.userid
INNER JOIN table3 ON table2.userid = table3.userid
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position
LEFT JOIN vacation on vacation.userid = table1.userid
WHERE vacation.user_id IS NULL or vacation.status = 1;

它需要是相同的查询,我尝试过,但它没有为我首先工作,现在它与您的例子,谢谢兄弟工作。