我有公司身份证号码和雇主,现在我需要知道谁是第一,第二...雇主输入分贝。为此我需要为每个像这样添加数字: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