我有公司ID号和雇主的数据库,现在我需要知道谁是第一,第二......雇主进入数据库。为此,我需要为每个人添加数字:
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
答案 0 :(得分:1)
表以未定义的顺序存储。要定义头寸,您必须自己定义订单。此示例根据员工姓名分配订单。它将为每个公司的员工提供数字:
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都不喜欢它们。