比方說,我有2個表,employee
和department
,department
有2個部門,dpt1和dpt2,有12個員工,6個部門和4個部門屬於這兩個部門。我如何使用mysql查詢來查找僅屬於dpt2而不屬於dpt1的員工?請幫我寫一個mysql查詢來選擇特定部門的成員
0
A
回答
0
SELECT employee.*
FROM employee
INNER JOIN employee_belongs_to_departments
WHERE employee.id = employee_belongs_to_departments.employee_id
AND employee_belongs_to_departments.department_id = 'dpt2'
AND employee.id NOT IN (
SELECT DISTINCT ebtd2.employee_id
FROM employee_belongs_to_departments ebtd2
WHERE ebtd2.employee_id = employee.id
AND ebtd2.department_id = 'dpt1'
)
0
在這種情況下通常的做法是將有第三個「連接」表,稱爲像employeeDepartment
。
CREATE TABLE employeeDepartment (
employee INT UNSIGNED NOT NULL,
department INT UNSIGNED NOT NULL,
PRIMARY KEY (employee, department)
)
,然後你也會讓employee
和department
外鍵到相應的表的主鍵,不過這需要你使用正確的存儲引擎(不,這是很難做到)是。
這使得做各種事情比您似乎要做的方法(將值列表存儲在一列中)容易得多。
然後,您可以使用
SELECT
eD1.employee
FROM
employeeDepartment AS eD1
LEFT JOIN employeeDepartment AS eD2 ON
eD1.employee = eD2.employee AND
eD2.department = 'dpt2' -- replace with appropriate integer
-- if using integers as I suggested
WHERE
eD1.department = 'dpt1' AND -- same comment applies
eD2.employee IS NULL
相關問題
- 1. 請求幫助mysql部門查詢
- 2. 請幫我寫個mysql查詢
- 3. 一個更好的方法來寫這個MySQL選擇查詢
- 4. 在單個查詢中選擇每個部門的TOP指定員工
- 5. MySQL查詢 - 幫助選擇
- 6. 我在寫一個mysql查詢。幫幫我
- 7. 寫一個查詢來選擇特定的外鍵條目給定一個特定的標準
- 8. 幫我選擇查詢
- 9. MySQL子查詢選擇特定列
- 10. MySQL查詢選擇5個成員或更高的組
- 11. 需要幫助寫一個MySQL查詢
- 12. 如何寫一個特定的MySQL查詢來執行關係部門/相交? Id est,我要寫什麼查詢?
- 13. 選擇部門名稱預查詢requiste
- 14. 特定的MySQL查詢:結合兩個MYSQL選擇語句或
- 15. MySQL查詢來選擇特定的數據
- 16. 請幫我與月查詢員工
- 17. 我在MySQL查詢錯誤,請幫我
- 18. 請幫我這個查詢
- 19. 幫我寫這個查詢
- 20. 在單個查詢中選擇兩個特定的mysql錶行
- 21. 請幫我創建一個SQL查詢
- 22. MySQL查詢來選擇記錄與特定日期
- 23. 有選擇地清除MySQL查詢緩存(只清除一個特定查詢)
- 24. 誰能幫我寫一個SQL查詢
- 25. 請幫我寫一個查詢,這些問題
- 26. mysql選擇查詢幫助 - ORDER BY
- 27. 需要MySQL選擇查詢幫助
- 28. 幫助與MySQL選擇查詢
- 29. 如何編寫一個計算經理部門僱員人數的SQL查詢?
- 30. MySQL的 - 在一個查詢中選擇
你如何設計員工和部門之間的連接,你有單獨的表多對多的關係,或與「DEP1,DEPT2」價值員工只是場? – bensiu 2011-02-07 13:21:29