我有一个自行车详细信息表,我想使用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
直接属于声明.)