mysql> INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 1' at line 1
INSERT INTO Users(weight, desiredWeight )
select '$userWeight', '$userDesiredWeight'
FROM (select 1 a ) dummy
WHERE '$userWeight' != '' AND '$userDesiredWeight'!='';
INSERT INTO Users(weight, desiredWeight )
SELECT '$userWeight', '$userDesiredWeight'
FROM (select 1 a ) dummy
WHERE '$userWeight' != '' AND '$userDesiredWeight'!='';
INSERT INTO Users( weight, desiredWeight )
select val1 , val2 from tableXShoulatNotBeUsers
WHERE somecondition;
b) 是的。如果记录已存在,请使用“更新”而不是“插入”:
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
应该是
Update Users set weight=160, desiredWeight=145 WHERE id = 1;
c) 是的。如果要同时更新或插入
Replace Users set weight=160, desiredWeight=145 WHERE id = 1;
Note):- you should provide values to all fields else missed field in query
will be set to null
d) 是的。如果要从同一个表中克隆一条记录,请记住不能从要插入的表中进行选择
create temporary table xtable ( weight int(11), desiredWeight int(11) ;
insert into xtable (weight, desiredWeight)
select weight, desiredWeight from Users where [condition]
insert into Users (weight, desiredWeight)
select weight , desiredWeight from xtable;
一种使用insert和where的方法 INSERT INTO MYTABLE SELECT 953,'Hello',43 WHERE 0 in (SELECT count(*) FROM MYTABLE WHERE myID=953); 在这种情况下,它就像一个存在的测试。如果你运行两次或两次以上也没有例外。。。
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);
此语句用一个子select插入多条记录。 如果要插入单个记录,可以使用以下语句:
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);
27条答案
按热度按时间rta7y2nd1#
where子句在任何情况下都可以与insert into值一起使用吗?
答案肯定是否定的。
在insert into后添加where子句。。。值。。。只是无效的sql,不会解析。
mysql返回的错误是:
错误消息最重要的部分是
它显示了解析器不希望在这里找到的特定部分:where子句。
jobtbby32#
可以根据用户输入执行条件插入。仅当输入变量“$userweight”和“$userdesiredweight”不为空时,此查询才会执行insert
kuuvgm7e3#
c6ubokkw4#
不能将where子句与values子句组合。据我所知,你有两个选择-
插入指定值
使用select语句插入
w8rqjzmb5#
这个问题的正确答案是:
a) 是的。如果要在插入前选择:
b) 是的。如果记录已存在,请使用“更新”而不是“插入”:
应该是
c) 是的。如果要同时更新或插入
d) 是的。如果要从同一个表中克隆一条记录,请记住不能从要插入的表中进行选择
我认为这涵盖了大部分的场景
igetnqfo6#
如果您指定一个特定的记录no来插入数据,那么最好使用它
UPDATE
语句而不是INSERT
声明。您在问题中编写的这种查询类似于虚拟查询。
您的查询是:-
在这里,您指定id=1,因此使用
UPDATE
语句来更新现有记录。不建议使用WHERE
条款(如有)INSERT
。你应该使用UPDATE
.正在使用更新查询:-
a11xaf1n7#
完全错了。insert查询没有where子句,只有update查询有它。如果您想添加id=1的数据,那么您的查询将是
kmbjn2e38#
一定也要读这个
没道理。。。甚至是字面意思
INSERT
意味着添加一个new row
当你说WHERE
你定义了你说的是哪一行SQL
.因此,在现有行上添加新行是不可能的。
您必须从以下选项中进行选择:
答。使用
UPDATE
而不是INSERT
b。使用INSERT
并移除WHERE
条款(我只是说…)或者如果你真的一定要用INSERT
以及WHERE
在单个语句中,只能通过insert..select子句。。。但这有着完全不同的用途,如果将id定义为主键,则插入将失败,否则将插入id=1的新行。
lxkprmvk9#
不能同时使用insert和where。您可以使用update子句为特定字段中的特定列添加值,如下面的代码;
u4dcyp6a10#
一种使用insert和where的方法
INSERT INTO MYTABLE SELECT 953,'Hello',43 WHERE 0 in (SELECT count(*) FROM MYTABLE WHERE myID=953);
在这种情况下,它就像一个存在的测试。如果你运行两次或两次以上也没有例外。。。gojuced711#
这取决于插入的情况,插入实际上可以有where子句。
例如,如果要匹配表单中的值。
有道理,不是吗?
j8yoct9x12#
之后
WHERE
子句设置一个条件,该条件用于获取数据或更新行。插入数据时,假定该行不存在。所以,问题是,有没有id为1的行?如果是,请使用mysql update,否则请使用mysql insert。
nmpmafwu13#
最简单的方法是使用if来违反a键约束。这只适用于插入忽略,但允许您在插入中使用约束。
kmb7vmvb14#
执行insert语句时不能使用where:
应该是:
where部分仅适用于select语句:
或在update语句中:
g9icjywg15#
插入查询不支持where关键字*
条件之所以适用,是因为可以对子select语句使用where条件。可以使用子选择执行复杂的插入。
例如:
通过在insert语句中放置“select”,可以快速执行多次插入。
对于这种类型的插入,您可能希望检查插入的行数。在执行插入之前,可以通过运行以下sql语句来确定要插入的行数。
使用exists条件可以确保不插入重复的信息。
例如,如果有一个名为clients的表,其主键为client\ id,则可以使用以下语句:
此语句用一个子select插入多条记录。
如果要插入单个记录,可以使用以下语句:
使用双表可以在select语句中输入值,即使这些值当前未存储在表中。
另请参见如何插入where子句