是否有一个mysql语法可以从表中预先形成选择值,然后将这些值复制到同一个表中,但更新副本的几列?
表(ticket
s),id
是主键,auto_increment:
id | name | start_date | end_date | value | active
name
,start_date
,end_date
和value
x
答案 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 = ?