2012-09-29 122 views
-1

如何找到誰是兩個以上企業從以下 表工作對員工的名字:需要解決這個sql查詢

Employee (employee_name, street, city, age) 

Works (employee_name, company_name, salary) 

回答

4

這應該讓你誰是工作超過2員工姓名公司。如果您需要更多詳細信息,則可以加入Employee表。

SELECT 
employee_name 
FROM 
Works 
GROUP BY 
employee_name 
HAVING 
COUNT(*) > 2 
1
SELECT employee_name FROM Works GROUP BY employee_name HAVING COUNT(*) > 2 

這使得與代表一次每個員工的列表,然後過濾掉,這樣只有那些有兩個以上的記錄有助於組顯示的員工。

0

除了較早前提供的答案(這是正確的BTW),如果你需要加入的表,可以考慮使用數字作爲主鍵(我假設employee_name是兩個表中的主鍵)。

這會加快您的查詢(前提是你有很多的記錄中的一個或兩個表),因爲你的DBMS會比較整數而不是字符串,這是相當快。

+1

完全依賴於由數據庫使用的索引方案。大多數人會在名字上使用散列,因此在那裏速度不會太快。您不太可能找回失去的性能,因爲現在必須維護員工的兩個索引,一個用於ID(用於連接),另一個用於employee_name(用於搜索)。通常,最好使用正確的數據表示並讓數據庫處理優化。 (由於其他原因,Employee_name不是很好的PK,性能可能不是其中之一)。 –