当前位置: 首页 > 面试题库 >

MySQL插入查询不适用于WHERE子句

南宫阳冰
2023-03-14
问题内容

此查询出了什么问题:

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

它在没有该WHERE子句的情况下起作用。我似乎忘记了我的SQL。


问题答案:

MySQL
INSERT语法不支持WHERE子句,因此您的查询将失败。假设您的id列是唯一键或主键:

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

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 .. ON DUPLICATE KEY语法,如下所示:

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查询? 我需要在一般的“ where”子句中使用子查询的结果。 问题答案: 您可以将其包装在子查询中,如下所示:

  • 问题内容: 我试图以编程方式在表中输入值。 我不能使用直接选择@variables。我必须使用关键字“值”。 在insert into中使用Values时,如何创建where子句。 我正在努力避免重复 问题答案:

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 我试图使用下面的MySQL语句

  • 问题内容: 我有两张桌子。 我这样查询: 我使用UNION是因为如果用户在第一个表和第二个表中都存在,我想为每个用户获取不同的值。 例如: 如果peter在任何一张桌子上,我应该一次获得名称,因为它在两个桌子上都存在。 我仍然从第一张桌子得到一排,从第二张桌子得到第二排。怎么了? 任何帮助表示赞赏。 问题答案: 您的SQL有两个问题: (这是 不是 问题,但应考虑)使用过,而不是表,您创建性能噩梦

  • 问题内容: 我有两个要加入的表。 我想要类别表中的所有类别以及用户在category_subscriptions表中订阅的所有类别。 基本上这是我到目前为止的查询: 这很好用,但是我想在查询的末尾添加一个where子句,然后从本质上使它成为一个内部/等参连接。 如何仅使用一个查询获取所有类别以及特定用户订阅的所有类别? category_id是类别表和user_category_subscript