14

我尝试用谷歌搜索这个问题,但只找到如何使用两个表来完成,如下所示,

INSERT INTO tbl_member
SELECT Field1,Field2,Field3,... 
FROM temp_table
WHERE NOT EXISTS(SELECT * 
         FROM tbl_member 
         WHERE (temp_table.Field1=tbl_member.Field1 and
               temp_table.Field2=tbl_member.Field2...etc.)
        )

这适用于一种情况,但现在我的兴趣是直接从程序本身上传数据而不使用两个表。我想要的是上传不在表格中的数据。我脑子里的sql是这样的,

INSERT INTO tbl_member (SensorIdValue, DataTimeValue, DataInValue, IncompleteValue, SpiValue, InfoValue)
VALUES ('Sensor.org', '20121017150103', 'eth0','','','')
WHERE (SensorIdValue != 'Sensor.org'AND DataTimeValue != '20121017150103'AND DataInValue != 'eth0'AND IncompleteValue != ''AND SpiValue != ''AND InfoValue != '');

但这是错误的..请我知道正确的做法,非常感谢:)

4

6 回答 6

23

INSERT语法不能有WHERE子句。唯一会发现INSERThasWHERE子句是在使用INSERT INTO...SELECT语句时。

第一种语法已经正确。

于 2012-10-18T06:40:54.430 回答
6

您可以使用 UPDATE 命令。

UPDATE table_name SET name=@name, email=@email, phone=@phone WHERE client_id=@client_id
于 2018-10-29T05:52:59.787 回答
2

INSERT语法不能有WHERE,但你可以使用UPDATE.

语法如下:

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;
于 2020-12-14T03:32:46.603 回答
1

如何使用 WHERE 子句执行 INSERT INTO SELECT 的示例。

INSERT INTO #test2 (id) SELECT id FROM #test1 WHERE id > 2
于 2015-10-30T08:31:03.583 回答
1

如果我理解目标是向表中插入一条新记录,但如果数据已经在表中:跳过它!这是我的答案:

INSERT INTO tbl_member 
(Field1,Field2,Field3,...) 
SELECT a.Field1,a.Field2,a.Field3,... 
FROM (SELECT Field1 = [NewValueField1], Field2 = [NewValueField2], Field3 = [NewValueField3], ...) AS a 
LEFT JOIN tbl_member AS b 
ON a.Field1 = b.Field1 
WHERE b.Field1 IS NULL

要插入的记录位于新值字段中。

于 2016-07-25T21:15:10.877 回答
-3

INSERT INTO 语句
INSERT INTO 语句用于在表中插入新行。
SQL INSERT INTO 语法

可以用两种形式编写 INSERT INTO 语句。

第一种形式没有指定将插入数据的列名,只指定它们的值:

INSERT INTO table_name
VALUES (value1, value2, value3,...)

第二种形式指定要插入的列名和值:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
于 2012-10-18T06:48:52.400 回答