我尝试使用谷歌搜索这个问题,但只找到如何使用两个表,如下所示,
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 != '');
但这是错的..我可以知道这样做的正确方法,非常感谢你:)
答案 0 :(得分:15)
INSERT
语法不能包含WHERE
子句。您使用INSERT
语句时,唯一一次找到WHERE
INSERT INTO...SELECT
子句。
第一种语法已经正确。
答案 1 :(得分:1)
如何使用WHERE子句执行INSERT INTO SELECT的示例。
INSERT INTO #test2 (id) SELECT id FROM #test1 WHERE id > 2
答案 2 :(得分:0)
如果我理解目标是向表中插入新记录但是如果数据已经在表中:跳过它!这是我的答案:
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
要插入的记录位于新值字段中。
答案 3 :(得分:0)
您可以使用UPDATE命令。
UPDATE table_name SET name=@name, email=@email, phone=@phone WHERE client_id=@client_id
答案 4 :(得分:0)
INSERT
语法不能包含WHERE
,但可以使用UPDATE
。
语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
答案 5 :(得分:-2)
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,...)