使用PHP / MySQL。如何获取名称所在行的行数或位置数? 实施例
________________ Row
|__ name_|_ age _| 1
| Joe | 30 | 2
| Henry | 24 | 3
| Rick | 55 | 4
| Tom | 19 | 5
数据库中没有行号 所以我想要一个代码,通过它我可以使用他们的名字并获得行的位置。 就像名字叫汤姆一样 - 它会回应汤姆位于第5行。 谢谢!
答案 0 :(得分:-1)
使用用户变量可以模拟row_number函数。
请记住,每次运行查询时,分配给每个人的#都会有所不同。按dateRegistered而不是name命令可能有所帮助,但如果发生任何插入,更新或删除,添加新记录,删除一个或将dateRegistered更改为过去的时间,可能会更改此编号。
SELECT A.*, @rn := @rn+1 as Row
FROM aTable A
CROSS JOIN (Select @rn :=0) B
ORDER BY Name
现在,如果你想要永久身份证...... 如果你希望ID按照日期的顺序排列,请务必更改更新以将订单更改为日期字段,但实际上无关紧要,因为以这种方式生成的PK(代理键)没有除了唯一标识记录之外的其他意义。
create table atable (
name varchar(10),
age int);
Insert into atable values
('Joe',30),
('Henry',24),
('Rick',55),
('Tom',19);
ALTER table atable add column ID int;
Update atable
INNER JOIN (
SELECT A.*, @rn := @rn+1 as Row
FROM aTable A
CROSS JOIN (Select @rn :=0) B
ORDER BY Name) B
on atable.Name = B.Name
and atable.Age = B.Age
set atable.id = B.Row;
ALTER TABLE atable MODIFY ID int NOT NULL primary key AUTO_INCREMENT;