更新MySQL而不指定列名

时间:2012-08-30 07:51:20

标签: mysql mysqli

我想更新一个mysql行,但我不想指定所有列名。 该表有9行,我总是想以正确的顺序更新最后7行。 这些是Fields

id
projectid
fangate
home
thanks
overview
winner
modules.wallPost
modules.overviewParticipant

有没有办法在不指定名字的情况下更新最后几条记录? 使用INSERT语句,可以通过以下方式轻松完成此操作:

INSERT INTO `settings`
VALUES (NULL, ...field values...)

所以我希望我能做到这样的事情:

UPDATE `settings`
VALUES (NULL, ...field values...)
WHERE ...statement...

但不幸的是,这不起作用。

5 个答案:

答案 0 :(得分:2)

如果两个第一列构成主键(或唯一索引),则可以使用replace

所以基本上不是写

UPDATE settings
   SET fangate = $fangate,
       home = $home,
       thanks = $thanks
       overview = $overview,
       winner = $winner,
       modules.wallPost = $modules.wallPost,
       modules.overviewParticipant = $modules.overviewParticipant
WHERE id = $id AND procjectId = $projectId

你会写

REPLACE INTO settings
 VALUES ($id, 
         $projectId,
         $fangate,
         $home,
         $thanks
         $overview,
         $winner,
         $modules.wallPost,
         $modules.overviewParticipant)

当然这仅在行已存在时才有效,否则将被创建。此外,如果重要的话,它将在场景后面引起DELETE和INSERT。

答案 1 :(得分:1)

你做不到。您始终必须指定列名称,因为UPDATE不会编辑整行,而是编辑指定的列。 这是一个UPDATE语法的链接: http://dev.mysql.com/doc/refman/5.0/en/update.html

答案 2 :(得分:1)

,它适用于INSERT,因为即使您没有指定列名,但您已在VALUE子句中提供了所有值。现在,在UPDATE中,您需要指定值与哪个列名相关联。

UPDATE语法需要修改的列名。

答案 3 :(得分:1)

您是否始终更新相同的表格和列?

在这种情况下,一种方法是在模式中定义存储过程。 你可以这样做:

CALL update_settings(id, projectid, values_of_last_7 ..);

虽然您必须创建该过程,但请检查Mysql网页以了解如何执行此操作,例如: http://docs.oracle.com/cd/E17952_01/refman-5.0-en/create-procedure.html

答案 4 :(得分:0)

我担心你不能指定列名。

您可以参考update documentation here