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条答案
按热度按时间okxuctiv16#
这取决于插入的情况,插入实际上可以有where子句。
例如,如果要匹配表单中的值。
有道理,不是吗?
ubby3x7f17#
不能同时使用insert和where。您可以使用update子句为特定字段中的特定列添加值,如下面的代码;
dgtucam118#
不。据我所知,您不能将where子句添加到此查询中。也许我也忘了我的sql,因为我不知道你为什么需要它。
mhd8tkvw19#
mysql insert语法不支持where子句,因此当前的查询将失败。假设你
id
列是唯一的或主键:如果尝试插入id为1的新行,则应使用:
如果试图更改id为1的现有行的weight/desiredweight值,则应使用:
如果需要,还可以使用插入。。重复键语法如下:
或者像这样:
同样重要的是要注意如果你的
id
列是一个自动递增的列,那么您最好将它从insert中一起省略,让mysql按正常方式递增它。i1icjdpr20#
如果您指定一个特定的记录no来插入数据,那么最好使用它
UPDATE
语句而不是INSERT
声明。您在问题中编写的这种查询类似于虚拟查询。
您的查询是:-
在这里,您指定id=1,因此使用
UPDATE
语句来更新现有记录。不建议使用WHERE
条款(如有)INSERT
。你应该使用UPDATE
.正在使用更新查询:-
l3zydbqr21#
最简单的方法是使用if来违反a键约束。这只适用于插入忽略,但允许您在插入中使用约束。
ckx4rj1h22#
我认为我们不能在insert语句中使用where子句
mzmfm0qo23#
我认为在指定行中插入值的正确形式是:
如果在microsoftsqlserver上写的话,它可以工作,并且是类似的
在mysql上,必须更新表。
xhv8bpkk24#
插入查询不支持where关键字*
条件之所以适用,是因为可以对子select语句使用where条件。可以使用子选择执行复杂的插入。
例如:
通过在insert语句中放置“select”,可以快速执行多次插入。
对于这种类型的插入,您可能希望检查插入的行数。在执行插入之前,可以通过运行以下sql语句来确定要插入的行数。
使用exists条件可以确保不插入重复的信息。
例如,如果有一个名为clients的表,其主键为client\ id,则可以使用以下语句:
此语句用一个子select插入多条记录。
如果要插入单个记录,可以使用以下语句:
使用双表可以在select语句中输入值,即使这些值当前未存储在表中。
另请参见如何插入where子句
ig9co6j125#
insert into=向表中添加行
upate=更新特定行。
插入语中的where子句描述了什么?它没有任何要匹配的内容,行不存在(尚未)。。。
wvyml7n526#
您可以使用以下代码执行此操作:
uxh89sit27#
我认为插入语中没有where子句。