mysql选择行然后复制行并更新值

时间:2012-06-21 13:40:37

标签: mysql select insert

是否有一个mysql语法可以从表中预先形成选择值,然后将这些值复制到同一个表中,但更新副本的几列?

表(ticket s),id是主键,auto_increment:

id | name | start_date | end_date | value | active
  • 从票证中选择一行,只需提供一些值,例如namestart_dateend_datevalue
  • 复制与该语句匹配的行,但按x
  • 更新该值
  • 插入带有更新的副本

2 个答案:

答案 0 :(得分:1)

这将插入与SELECT..WHERE语句中的条件匹配的任何行的副本,其中新行的原始键ID根据您的规范自动生成。

INSERT INTO `tickets`(`name`, `start_date`, `end_date`, `value`, `active`)    
SELECT `name`, `start_date`, `end_date`, `value`+[value_modifier], `active`
FROM `tickets`
WHERE `name`       = '[name value]' AND
      `start_date` = [start_date]   AND  -- assuming date is timestamp otherwise wrap in '
      `end_date`   = [end_date]     AND
      `value`      = [some_value]        -- assuming value is number    

如果只是需要更新 - 但不是复制符合某些条件的行,那么显然你只需要使用UPDATE语句

答案 1 :(得分:0)

不清楚你的目标是什么,这可能会有所帮助吗?

INSERT INTO tickets SELECT t.startdate,t.endate, 'x' value FROM tickets t WHERE t.start_date = ? AND t.end_date = ? AND t.name = ? AND t.value = ?