使用SQL将值插入特定行

Mat*_*att 20 sql

我有一个自行车详细信息表,我想使用SQL查询为不同的自行车类型添加不同的价格,但是我给了我一个语法错误:

INSERT INTO bike (full_day)
VALUES (10)
WHERE bike_type = 'mens_hybrid';
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

rua*_*akh 53

一种INSERT说法是只为创造全新的记录,而不是将数据填充到现有的.你需要的是一个更新现有记录的UPDATE声明:

UPDATE bike SET full_day = 10 WHERE bike_type = 'mens_hybrid';
Run Code Online (Sandbox Code Playgroud)

(注意:下面是这个答案的早期版本,从我之前很清楚原始海报试图做的事情.我将它留在这里,因为最初回答这个问题的多个人似乎没有注意到这个问题写作INSERT ... VALUES (...) WHERE,这让我觉得这个解释可能对遇到这个问题的人有用.)


那句话没有意义.一个INSERT不能接受一个WHERE子句,因为它WHERE引用了现有的记录,并INSERT创建了一个新的记录.

(防止潜在的混淆:存在这样的事情INSERT INTO ... SELECT ...,即插入的记录由SELECT查询而不是VALUES表达式确定,在这种情况下,SELECT查询当然可以有一个WHERE子句.但在任何情况下都不是WHERE子句INSERT直接属于声明.)