2011-05-24 174 views
1

我有公司身份證號碼和僱主,現在我需要知道誰是第一,第二...僱主輸入分貝。爲此我需要爲每個像這樣添加數字:MySQL添加數字

CompanyID NameOfEmp  PositionInDB 
111   Emp1   1 
111   Emp2   2 
111   Emp3   3 
112   Emp1   1 
112   Emp2   2 
113   Emp1   1 
114   Emp1   1 
114   Emp2   2 
+2

你的問題到底是什麼?你嘗試過什麼,沒有按預期工作?你卡在哪裏? – blubb 2011-05-24 08:58:13

+0

你沒有真的問任何問題。有什麼問題? – TJHeuvel 2011-05-24 08:58:17

+0

Emp1,Emp2等是正確寫入Empx的字符串還是有所不同? – Marco 2011-05-24 08:59:02

回答

1

表格以未定義的順序存儲。爲了定義一個職位,你必須自己定義一個訂單。此示例根據員工的姓名分配訂單。它將alfabetically員工人數每家公司:

select * 
,  (
     select count(*) + 1 
     from YourTable yt2 
     where yt2.CompanyID = yt1.CompanyID 
       and yt2.NameOfEmp < yt1.NameOfEmp 
     ) as PositionInDb 
from YourTable yt1 

既然你使用MySQL,你也可以使用一個變量:

set @num = 1; 

select CompanyID 
,  NameOfEmp 
,  @num := if(@last_comp = CompanyID, @num + 1, 1) as PositionInDb 
,  @last_comp := CompanyID as dummy 
from YourTable 
order by 
     CompanyID 
,  NameOfEmp 

變量是快速和容易的,但不便於攜帶,而且大多數DBA的反感他們。

+0

+1使用'可變方法' – diEcho 2011-05-24 09:24:36

+0

謝謝你們,這正是我需要的。 – Pooky 2011-05-24 09:40:50