gpt4 book ai didi

mysql - 如何循环数据以及用户名是否存在附加增量数字,例如JOHSMI1 或 JOHSMI2

转载 作者:行者123 更新时间:2023-11-29 06:15:39 27 4
gpt4 key购买 nike

我有一个用户ID表

用户ID

JHOSMI

卡尔维

等...

我想做的是创建一个 select 语句并传递用户 ID,如果用户 ID 已经存在,则将 1 附加到该 ID,如果您已经有 JHOSMI、JHOSMI1,这会变得复杂,然后我想返回 JHOSMI2。

非常感谢这里的帮助。

提前致谢

7 月 21 日编辑

这是我到目前为止所得到的..但没有按这种方式工作

    select @p AS StaffID,
@old_p := @p,
@Cnt := @Cnt+1 As Lvl,
(SELECT @p :=Concat(@i, @Cnt)
FROM departmenttaff
WHERE upper(trim(UserId)) = upper(trim(StaffID))
AND upper(trim(department)) like upper(trim('SERVICE'))
) AS dummy
FROM (
SELECT
@i := upper(trim('JOHSMI')),
@p := upper(trim('JOHSMI')),
@old_p :='',
@Cnt:=0
) vars,
departmenttaff p
WHERE @p <> @old_p
order by Lvl Desc LIMIT 1;

最佳答案

这将完全按照您的要求进行。您将需要对您的列进行唯一约束。如果成功 = 0,您可能还需要添加错误代码。这是在MSSQL中,您需要添加MySQL的相关命令。我没有 MySQL,所以无法测试它。

注意:您可以用一些 IF EXISTS 逻辑替换 try catch。我只是更喜欢 try catch,因为它对于多线程来说更稳定。

begin tran
select * from #tmp


declare @success bit
declare @name varchar(50)
declare @newname varchar(50)
declare @nextid int
declare @attempts int
set @name = 'brad2something'
set @success = 0
set @attempts = 0

while @success = 0 and @attempts < 5 begin

begin try

set @attempts = @attempts + 1 -- failsafe

set @newname = @name

if exists (select * from #tmp where username = @name) begin

select @nextid = isnull(max(convert(int, substring(username, LEN(@name) + 1, 50))), 0) + 1
from #tmp where username like @name + '%' and isnumeric(substring(username, LEN(@name) + 1, 50)) = 1

set @newname = @name + CONVERT(varchar(20), @nextid)
end

insert into #tmp (username) values (@newname)

set @success = 1

end try begin catch end catch

end



--insert into #tmp (username)
--select
select @success
select * from #tmp
rollback


/*
drop table #tmp
create table #tmp (
username varchar(50) not null unique
)

insert into #tmp (username)
select 'brad'
union all select 'brad1'
union all select 'brad2something5'
union all select 'brad2'
union all select 'laney'
union all select 'laney500'
*/

关于mysql - 如何循环数据以及用户名是否存在附加增量数字,例如JOHSMI1 或 JOHSMI2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com