我有公司身份證號碼和僱主,現在我需要知道誰是第一,第二...僱主輸入分貝。爲此我需要爲每個像這樣添加數字: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
我有公司身份證號碼和僱主,現在我需要知道誰是第一,第二...僱主輸入分貝。爲此我需要爲每個像這樣添加數字: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
表格以未定義的順序存儲。爲了定義一個職位,你必須自己定義一個訂單。此示例根據員工的姓名分配訂單。它將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的反感他們。
你的問題到底是什麼?你嘗試過什麼,沒有按預期工作?你卡在哪裏? – blubb 2011-05-24 08:58:13
你沒有真的問任何問題。有什麼問題? – TJHeuvel 2011-05-24 08:58:17
Emp1,Emp2等是正確寫入Empx的字符串還是有所不同? – Marco 2011-05-24 08:59:02