mysql - 在不指定列名的情况下更新 MySQL

标签 mysql

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

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...

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

最佳答案

如果前两列构成主键(或唯一索引),您可以使用 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。

关于mysql - 在不指定列名的情况下更新 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192278/

相关文章:

mysql - 18 个月内没有新记录的患者返回

Mysql 复制数据库中选定的表?

php - Laravel Backpack - 应用具有多个连接表的过滤器后 ID 发生变化

MySQL 5.1.39 SQL语法错误

具有数组键的 PHP MySQL mysql_fetch_assoc 以 'as' 名称区分

MySQL.exe,无法登录以获取访问权限,语法为 1064 错误

Java 数据库 mySQL 访问被拒绝

php - 在 CodeIgniter 中如何正确地将 post 变量从 View 传递到 Controller ?

php - MySQL选择时间分组,其中时间戳从具有时区差异的不同行重叠

php - 在函数中编写 MySQLi 准备语句的正确方法?