Mysql 根据用户位置插入值

Mysql 根据用户位置插入值,mysql,sql,Mysql,Sql,在mySql中,是否可以基于某些内容进行插入?在我的例子中,我想根据用户的位置进行插入。这些地点像美国、英国、非盟、加利福尼亚等。 因此,如果地点是美国,我想做1-0001,1-0002等,英国2-001,2-002等 也许通过使用这样的例子,这是可能的 我当前的插入如下所示: insert into prodClassifieds (userId, userName, classStatus, classCountry, classId) select $userId,

在mySql中,是否可以基于某些内容进行插入?在我的例子中,我想根据用户的位置进行插入。这些地点像美国、英国、非盟、加利福尼亚等。 因此,如果地点是美国,我想做1-0001,1-0002等,英国2-001,2-002等

也许通过使用这样的例子,这是可能的

我当前的插入如下所示:

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值。