是否有一种 mysql 语法可以从表中执行选择值,然后将这些值复制到同一个表中,但更新副本的几列?
表(ticket
s),id
是主键,auto_increment:
id | name | start_date | end_date | value | active
name
从给定几个值(如、start_date
和)的end_date
工单中选择一行value
- 复制与语句匹配的行,但将值更新为
x
- 插入带有更新的副本
这将插入与 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 语句
不太清楚你在做什么,这可能会有所帮助吗?
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 = ?