此查询有什么问题:
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
它在没有 WHERE 条款。我好像忘了sql。
WHERE
zqdjd7g916#
我认为插入语中没有where子句。
44u64gxh17#
我认为我们不能在insert语句中使用where子句
v440hwme18#
您可以使用以下代码执行此操作:
INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition
o8x7eapl19#
不。据我所知,您不能将where子句添加到此查询中。也许我也忘了我的sql,因为我不知道你为什么需要它。
pod7payv20#
insert into=向表中添加行upate=更新特定行。插入语中的where子句描述了什么?它没有任何要匹配的内容,行不存在(尚未)。。。
qf9go6mv21#
mysql insert语法不支持where子句,因此当前的查询将失败。假设你 id 列是唯一的或主键:如果尝试插入id为1的新行,则应使用:
id
INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
如果试图更改id为1的现有行的weight/desiredweight值,则应使用:
UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
如果需要,还可以使用插入。。重复键语法如下:
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按正常方式递增它。
utugiqy622#
我知道这是一个老帖子,但我希望这仍然会帮助一些人,我希望是一个简单的例子:背景:我遇到了一个多对多的例子:同一个用户被多次列出,并且有多个值,我想创建一个新的记录,因此更新在我的例子中没有意义,我需要处理一个特定的用户,就像使用where子句一样。
INSERT into MyTable(aUser,aCar) value(User123,Mini)
通过使用这个构造,实际上您的目标是一个特定的用户(user123,他有其他记录),所以我认为您实际上不需要where子句。输出可以是:
aUser aCar user123 mini user123 HisOtherCarThatWasThereBefore
6yoyoihd23#
我认为在指定行中插入值的正确形式是:
UPDATE table SET column = value WHERE columnid = 1
如果在microsoftsqlserver上写的话,它可以工作,并且是类似的
INSERT INTO table(column) VALUES (130) WHERE id = 1;
在mysql上,必须更新表。
fumotvh324#
使用post方法的mysql insert into语句的正确语法为:
$sql="insert into ttable(username,password) values('$_POST[username]','$_POST[password]')";
uinbv5nw25#
不应在insert语句中使用where条件。如果要这样做,请在update语句中使用insert,然后更新现有记录。事实上,我能知道为什么在insert语句中需要where子句吗??也许基于这个原因我会给你一个更好的选择。
kiz8lqtg26#
我认为你最好的选择是用替换代替插入替换为用户(id,weight,desiredweight)值(1,160,145);
mznpcxlj27#
您可以使用where子句进行更新查询。插入时,假设该行不存在。op的声明将变成;更新users set weight=160,desiredweight=45,其中id=1;在mysql中,如果要插入或更新,可以使用带有where子句的replace查询。如果where不存在,则插入,否则更新。编辑我认为比尔·卡尔温的观点非常重要,足以从评论中脱颖而出,让它变得非常明显。谢谢bill,我已经很久没有使用mysql了,我记得我在replace上遇到过问题,但是我忘了它们是什么。我应该查一下的。mysql的replace不是这样工作的。它执行delete(如果该行不存在,则可能是no op),然后执行insert。想想后果。触发器和外键依赖项。相反,在重复密钥更新时使用insert。
27条答案
按热度按时间zqdjd7g916#
我认为插入语中没有where子句。
44u64gxh17#
我认为我们不能在insert语句中使用where子句
v440hwme18#
您可以使用以下代码执行此操作:
o8x7eapl19#
不。据我所知,您不能将where子句添加到此查询中。也许我也忘了我的sql,因为我不知道你为什么需要它。
pod7payv20#
insert into=向表中添加行
upate=更新特定行。
插入语中的where子句描述了什么?它没有任何要匹配的内容,行不存在(尚未)。。。
qf9go6mv21#
mysql insert语法不支持where子句,因此当前的查询将失败。假设你
id
列是唯一的或主键:如果尝试插入id为1的新行,则应使用:
如果试图更改id为1的现有行的weight/desiredweight值,则应使用:
如果需要,还可以使用插入。。重复键语法如下:
或者像这样:
同样重要的是要注意如果你的
id
列是一个自动递增的列,那么您最好将它从insert中一起省略,让mysql按正常方式递增它。utugiqy622#
我知道这是一个老帖子,但我希望这仍然会帮助一些人,我希望是一个简单的例子:
背景:
我遇到了一个多对多的例子:同一个用户被多次列出,并且有多个值,我想创建一个新的记录,因此更新在我的例子中没有意义,我需要处理一个特定的用户,就像使用where子句一样。
通过使用这个构造,实际上您的目标是一个特定的用户(user123,他有其他记录),所以我认为您实际上不需要where子句。
输出可以是:
6yoyoihd23#
我认为在指定行中插入值的正确形式是:
如果在microsoftsqlserver上写的话,它可以工作,并且是类似的
在mysql上,必须更新表。
fumotvh324#
使用post方法的mysql insert into语句的正确语法为:
uinbv5nw25#
不应在insert语句中使用where条件。如果要这样做,请在update语句中使用insert,然后更新现有记录。
事实上,我能知道为什么在insert语句中需要where子句吗??
也许基于这个原因我会给你一个更好的选择。
kiz8lqtg26#
我认为你最好的选择是用替换代替插入
替换为用户(id,weight,desiredweight)值(1,160,145);
mznpcxlj27#
您可以使用where子句进行更新查询。插入时,假设该行不存在。
op的声明将变成;
更新users set weight=160,desiredweight=45,其中id=1;
在mysql中,如果要插入或更新,可以使用带有where子句的replace查询。如果where不存在,则插入,否则更新。
编辑
我认为比尔·卡尔温的观点非常重要,足以从评论中脱颖而出,让它变得非常明显。谢谢bill,我已经很久没有使用mysql了,我记得我在replace上遇到过问题,但是我忘了它们是什么。我应该查一下的。
mysql的replace不是这样工作的。它执行delete(如果该行不存在,则可能是no op),然后执行insert。想想后果。触发器和外键依赖项。相反,在重复密钥更新时使用insert。