【问题标题】:insert into..on duplicate key with different column names插入..on 具有不同列名的重复键
【发布时间】:2014-05-28 10:35:33
【问题描述】:

我有两张桌子profieltestparametertest

我希望 profieltest 中的 value 列使用来自 parametertest 的参数进行更新,其中 user id 相同,而 profieltest 中的 field_id = 2 。但是,如果profieltest 中的userfield_id 之间的组合不存在,我希望它从parametertest 插入。我尝试了一个带有唯一键的重复键语句:CREATE UNIQUE INDEX uniqfield ON profieltest (field_id, user)profieltest.id 也是一个自动增量值。我尝试了以下查询,但它给了我一个错误:

1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近't1(t1.user,t1.field_id,t1.value)值(id,t1.user = t2.user, t1.field_' 在第 1 行

INSERT INTO profieltest t1(t1.user, t1.field_id, t1.value)
VALUES( id ,t1.user = t2.user, t1.field_id=2,  t1.value=t2.parameter)
  SELECT t2.user, t2.parameter
  FROM parametertest t2
  ON DUPLICATE KEY
  UPDATE  SET t1.value = t2.parameter    
  WHERE t1.User = t2.user
    AND t1.Field_id = 2

编辑:添加错误。

【问题讨论】:

  • 对不起,错误是:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 't1 (t1.user, t1.field_id, t1.value) Values( , t2.user, 2, t2.parameter) ' 附近使用正确的语法

标签: mysql insert on-duplicate-key


【解决方案1】:

以下查询对我有用:

INSERT INTO Profieltest ( field_id,  user, value )

SELECT field_id, User,  value
FROM parametertest
    WHERE   
    (field_id = 2
    OR field_id  =  6 
    OR field_id = 7)

On duplicate KEY UPDATE 
profieltest.value=(SELECT t2.value
  FROM parametertest t2
  WHERE t2.field_id =profieltest.field_id AND  t2.user=profieltest.user )

【讨论】:

    猜你喜欢
    • 2020-12-23
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多