Mysql 根据用户位置插入值
在mySql中,是否可以基于某些内容进行插入?在我的例子中,我想根据用户的位置进行插入。这些地点像美国、英国、非盟、加利福尼亚等。 因此,如果地点是美国,我想做1-0001,1-0002等,英国2-001,2-002等 也许通过使用这样的例子,这是可能的 我当前的插入如下所示:Mysql 根据用户位置插入值,mysql,sql,Mysql,Sql,在mySql中,是否可以基于某些内容进行插入?在我的例子中,我想根据用户的位置进行插入。这些地点像美国、英国、非盟、加利福尼亚等。 因此,如果地点是美国,我想做1-0001,1-0002等,英国2-001,2-002等 也许通过使用这样的例子,这是可能的 我当前的插入如下所示: insert into prodClassifieds (userId, userName, classStatus, classCountry, classId) select $userId,
insert into prodClassifieds (userId, userName, classStatus, classCountry, classId)
select
$userId,
'$userName',
1,
'$userCountry',
IFNULL((MAX(classId)+1) ,0)
FROM prodClassifieds
编辑:我可以省略1-0001中的-。此外,MAX(col)是MAX(classId),而不是我最初发布的那个。下一个值是1+当前值。是的,这是可能的
insert into prodClassifieds
(userId, userName, classStatus, classCountry, classId)
select $userId, '$userName', 1,
'$userCountry',
case when userCountry='US' then
MAX(sc_stack_id)+1 else 0 end
FROM prodClassifieds
在以下情况下,您可以根据需要添加多个条件用例:
insert into prodClassifieds (userId, userName, classStatus, classCountry, classId)
select
$userId,
'$userName',
CASE '$userCountry' WHEN 'US' THEN 10000 WHEN 'UK' THEN 20000 ELSE 90000 END CASE
+ 1,
'$userCountry',
IFNULL((MAX(sc_stack_id)+1) ,0)
FROM prodClassifieds
是的,可以使用
案例
。您正在尝试修改哪个值?哪一列会导致1-0001
?将位置值放入表中并连接如果您试图为classId
构造位置值,这将更加困难,因为MAX()+1
会受到竞争条件的影响。。。让我们知道这些将如何使用,我们可以提供帮助。@MichaelBerkowskiclassId@Norman这是用于一次性数据加载,还是通过从活动站点不断更新来加载?这是最后一列(IFNULL())这就是OP想要应用这种模式的原因。@MichaelBerkowski,但这对所有国家都会给出相同的结果,对吧?这就是为什么根据我上面的评论,这很复杂。你不能只向MAX()聚合中添加1(特别是没有分组依据)。是的@MichaelBerkowski感谢你的指导。“按国家分组”会解决这个问题吗?它会在某些时候起作用,但如果同时插入两个查询,则竞争条件可能会导致值不同步,或者为这两个查询插入相同的MAX()+1值。