MySQL直接插入with WHERE子句

MySQL直接插入with WHERE子句,mysql,insert,where-clause,Mysql,Insert,Where Clause,我试着用谷歌搜索这个问题,但只找到了如何使用两个表,如下所示 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_m

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

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 != '');

但这是错误的。。请告诉我正确的方法,非常感谢:)

INSERT
语法不能有
WHERE
子句。只有在使用
INSERT to…SELECT
语句时,才能找到
INSERT
has
WHERE
子句

第一个语法已经正确

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

可以用两种形式将INSERT写入语句

第一种形式不指定插入数据的列名,只指定其值:

INSERT INTO table_name
VALUES (value1, value2, value3,...)
第二种形式指定要插入的列名和值:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

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

INSERT INTO #test2 (id) SELECT id FROM #test1 WHERE id > 2

如果我知道目标是向表中插入新记录,但如果数据已经在表中:跳过它!以下是我的答案:

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

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

您可以使用UPDATE命令

UPDATE table_name SET name=@name, email=@email, phone=@phone WHERE client_id=@client_id

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

语法如下:

UPDATE table_name

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

WHERE condition;

好的,谢谢,我会根据我的需要尝试优化第一个查询:)是的,我真是太愚蠢了,只需要在select查询中调用同一个表并将其与我想要的值进行匹配:)非常感谢:)基于您心目中的SQL,如果表中不存在行,那么您可能希望将其插入表中。如果是这样,请看一下这个问题/答案。请看这个问题。这可能会有帮助。是的,这正是我需要检查的……非常感谢你的回复:)谢谢你的回复,但我想执行一个有条件的“插入”语句:)它是自我解释的。这是一个示例,说明可以使用WHERE子句插入到中。这是一个非常简单的例子,任何人都应该能够理解这个概念。否决票不是我的,我喜欢评论。如你所见,其他人不同意。我发现你的帖子质量很低,所以我建议你改进一下。好吧,即使投票被否决了,我也会把它保留下来,因为我相信这会对以后的人有所帮助。