我有表attendance
,employee
,payroll
爲什麼SQL返回不同的結果,而使用和計數,*查詢
出席表:
Employee_ID Clockin Clockout
---------------------------------
1 08:00:00 18:00:00
2 08:00:00 18:00:00
3 08:00:00 18:00:00
4 08:00:00 18:00:00
員工表:
Employee_ID Name Employee_type
---------------------------------
1 Mary Full-time
2 Peter Full-time
3 John Full-time
4 Henry Full-time
這是SQ大號查詢我只得到1行
SELECT *, COUNT(attendance.Clockin)
FROM payroll
LEFT JOIN attendance ON attendance.Employee_ID = payroll.Employee_ID
LEFT JOIN employee ON employee.Employee_ID = payroll.Employee_ID
WHERE employee.Employee_type = 'Full-time'
這裏是SQL查詢,我得到更多的行返回
SELECT *
FROM payroll
LEFT JOIN attendance ON attendance.Employee_ID = payroll.Employee_ID
LEFT JOIN employee ON employee.Employee_ID = payroll.Employee_ID
WHERE employee.Employee_type = 'Full-time'
什麼是這兩個查詢之間的區別?
假設這是mysql,它使用擴展組。意思是,如果你沒有定義組,它將從每列中選擇一個值並返回。由於第一個聚合擴展組是有效的,因爲第二個select *沒有聚合,所以它只是返回每一行。 [服務器可以自由選擇每組中的任何值,因此除非它們相同,否則所選的值是不確定的。](https://dev.mysql.com/doc/refman/5.0/zh-CN/group-by- handling.html) – xQbert
結果集的出席率.Clockin包含null。 – jarlh
您正在從工資表中選擇。它在哪裏?顯示它的內容 –