![](/img/trans.png)
[英]Transferring data from one table to another using a where clause mysql
[英]Getting all data from one table, while another table is empty and where clause is also applied
兩張表:員工和薪水
我從員工獲得的所有記錄,即使工資表是通過使用LEFT JOIN空的,但是當我用在薪金表,它不會讓我所有的員工。
我如何獲取所有員工記錄?
SELECT `s`.`basic_salary`,`e`.`name`
FROM (`employees` as e)
LEFT JOIN `salaries` as s ON `s`.`employee_id`=`e`.`employee_id`
WHERE `s`.`session_id` = '19' AND `s`.`month_id` = '7'
GROUP BY `e`.`employee_id`
第二個表上的條件需要on
子句中:
SELECT s.`basic_salary`, e.`name`
FROM `employees` e LEFT JOIN
`salaries` s
ON `s`.`employee_id`=`e`.`employee_id` AND
`s`.`session_id` = '19' AND `s`.`month_id` = '7'
GROUP BY e.`employee_id`
否則,您會將外部聯接轉換為內部聯接。
您的查詢中的WHERE
取消了LEFT JOIN
的作用,因為您期望s.session_id
和s.month_id
具有價值。 如果您想要過濾工資為空或符合特定條件的員工,則可以嘗試:
SELECT `s`.`basic_salary`,`e`.`name`
FROM (`employees` as e)
LEFT JOIN `salaries` as s ON `s`.`employee_id`=`e`.`employee_id`
WHERE (`s`.`session_id` = '19' AND `s`.`month_id` = '7' OR `s`.`employee_id` IS NULL)
GROUP BY `e`.`employee_id`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.