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;
它需要是相同的查询,我尝试过,但它没有为我首先工作,现在它与您的例子,谢谢兄弟工作。