[英]MySQL select rows from one table not in another for specific dates
我有兩個表個人和職員登錄時間,如下所述。 我想獲取在特定日期未登錄的人員。
individuals
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1 | Smith | 1234567897 |
+----+------+--------------+
| 2 | David | 9874561237 |
+----+------+--------------+
| 3 | John | 7778889991 |
+----+------+--------------+
staff_login_times
+----+------+--------------+
| id | individual_id | login_date |
+----+------+--------------+
| 1 | 2 | 2017-02-27 |
+----+------+--------------+
| 2 | 1 | 2017-02-26 |
+----+------+--------------+
| 3 | 2 | 2017-02-26 |
+----+------+--------------+
| 4 | 3 | 2017-02-26 |
+----+------+--------------+
我如何找出27日不在場的人
Result
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1 | Smith | 1234567897 |
+----+------+--------------+
| 3 | John | 7778889991 |
+----+------+--------------+
我嘗試過的查詢:
SELECT *
FROM individuals
LEFT JOIN staff_login_times ON individuals.id = staff_login_times.individual_id
WHERE staff_login_times.individual_id IS NULL
AND staff_login_times.login_date = '2017-02-27'
只是很小的變化,使用您的條件和join語句即可:-
SELECT *
FROM individuals
LEFT JOIN staff_login_times ON individuals.id = staff_login_times.individual_id AND staff_login_times.login_date = '2017-02-27'
WHERE staff_login_times.individual_id IS NULL
你不需要加入
嘗試這個
select * from individuals
where id not in
(select individual_id from staff_login_times where login_date = '2017-02-27');
我希望這有幫助:
SELECT a.id, a.`name`, a.phone_number, b.login_date FROM individuals a LEFT JOIN
staff_login_times b on a.id = b.individual_id WHERE b.login_date <> "2017-02-27";
您可以使用的另一個選項是where
條件而不是LEFT JOIN
擴展
SELECT individuals.id ,individuals.name FROM individuals ,staff_login_times WHERE
staff_login_times.login_date = '2017-02-27'
AND staff_login_times.individual_id != individuals.id ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.