这个查询有什么问题:

INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;

它在没有WHERE条款的情况下有效.我好像忘记了我的SQL.

推荐答案

MySQL INSERT Syntax不支持WHERE子句,因此当前的查询将失败.假设id列是唯一的或主键:

如果试图插入ID为1的新行,则应使用:

INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);

如果试图更改ID为1的现有行的权重/期望权重值,则应使用:

UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;

如果需要,还可以使用INSERT..关于重复键语法,如下所示:

INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

甚至像这样:

INSERT INTO Users SET id=1, weight=160, desiredWeight=145 ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145

还需要注意的是,如果id列是一个自动增量列,那么最好将其从INSERT中删除,并让mysql按正常方式递增.

Mysql相关问答推荐

将值代入子查询

表列中的SQL SUM MENY值记录单个查询

获取最大登录应用程序用户数以及何时

如何进行查询以在两个不同的列中搜索两个不同的数据字符串?

使用 Having 表达式连接多个表

如何使用 DBD::mysql 判断 MySQL 服务是否正在运行

为什么 MySQL 不使用索引进行简单的SELECT * FROM Table WHERE field='value'查询?

如何使用 Raw SQl / Laravel 进行累积计数 - Eloquent ORM

SQL 查找边界之间的值

如何在 SQL 的计算列中显示小数点后两位?

动态创建内联 SQL 表(用于排除左连接)

将相同的固定值插入多行

在 WHERE 子句中使用 CASE

INSERT ... 使用 WHERE 进行重复的密钥更新?

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

MySQL获取两个值之间的随机值

如何从邮箱地址中 Select 域名

PHP MYSQL - 插入不使用列名但使用自动增量字段

如何使 MySQL 的 NOW() 和 CURDATE() 函数使用 UTC?

使用 Prepared Statement,我如何返回插入行的 id?