插入和更新sql表

时间:2018-01-16 14:43:02

标签: php mysql sql

我在数据库中有2个表:usersuser_settings
users表格中,我的主键列为user_id,其他列为first_namelast_name
user_setting表格中有4列:user_idlocalevalue_namevalue。有不同的user_id条记录,有些user_id可能会多次出现,也可能不会出现一次。

我想添加user_setting表,user_id等于'first_name'而value_name来自valee的每个users的记录1}}表first_name列。对last_name也一样。

换句话说,我想在user_settinguser_idlocale列中为每个value_name添加value表格值:('en_us','first_name',来自users表的first_name列)和('en_us','last_name',来自users表的last_name列)。
例如,在users表中,如果有user_id:10,其中first_name ='john',last_name ='smith',我想将这两个记录添加到user_setting表中:
(10,'en_US','first_name','john')和(10,'en_US','last_name','smith')

这个任务的查询是什么?非常感谢

1 个答案:

答案 0 :(得分:0)

一个非常天真的解决方案就是选择你想要的字段并将它们插入到另一个表中......

INSERT INTO
  user_Setting (
    user_id,
    locale,
    value_name,
    value
  )

SELECT
  user.id,
  'en_us',
  'first_name',
  user.first_name
FROM
  user

UNION ALL

SELECT
  user.id,
  'en_us',
  'last_name',
  user.last_name
FROM
  user
;

这假设此表中没有此类记录,因此您无需在运行INSERT之前进行任何检查。