我想根据名字和姓氏自动生成用户名.例如,
如果firstname = John和lastname = Tory,那么username应该是johntory.但是,如果该用户名已经存在于数据库中,我想增加1表示同名,下一个用户名将是johntory2.
我在PHP中有这样的东西..
foreach($existing_users as $u){
if($u['username'] != $new_generated_username){
// Enter it directly...
}
else{
// increment count value...
}
}
但是,有一个问题,如果用户名像johntory5或其他东西……
有没有办法我可以通过检查所有内容直接在mysql的INSERT语句中更新.
解决方法:
您可以直接在INSERT语句中直接执行此操作,如下所示:
INSERT INTO User (username, first, last)
SELECT CONCAT('johntory', COUNT(id)), 'John', 'Tory'
FROM User WHERE username LIKE 'johntory%';
或者,如果你不喜欢前面的零,你可以使用这个:
INSERT INTO User (username, first, last)
SELECT CONCAT('johntory', CASE WHEN COUNT(id) = 0 THEN '' ELSE COUNT(id) END), 'John', 'Tory'
FROM User WHERE username LIKE 'johntory%';
这非常快速有效.它使用子查询来准备值,然后插入它们.
此外,这将比这里提供的任何PHP解决方案快许多倍,特别是如果您处理数十亿行.
就个人而言,我喜欢MySql的简洁性和性能
请享用!
〜Techdude
标签:php,mysql
来源: https://codeday.me/bug/20190609/1206766.html