【问题标题】:MySQL direct INSERT INTO with WHERE clauseMySQL 使用 WHERE 子句直接 INSERT INTO
【发布时间】:2012-10-08 13:13:53
【问题描述】:

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

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

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

【问题讨论】:

标签: mysql insert where-clause


【解决方案1】:

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

语法如下:

UPDATE table_name

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

WHERE condition;

【讨论】:

    【解决方案2】:

    你可以使用 UPDATE 命令。

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

    【讨论】:

    • 最简单的解决方案,可以在mysql中使用。
    【解决方案3】:

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

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

    【讨论】:

    • 这是自我解释的。这是一个示例,说明您可以使用 WHERE 子句 INSERT INTO。这是一个非常简单的例子,任何人都应该能够掌握这个概念。
    • 投反对票不是我的,我喜欢评论。如您所见,其他人不同意。我在低质量的帖子中发现了你的帖子,所以我建议你改进它。
    • 酷,好吧,即使投了反对票,我也会放弃它,因为我相信它可以帮助以后的人。
    【解决方案4】:

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

    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
    

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

    【讨论】:

      【解决方案5】:

      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,...)
      

      【讨论】:

      • 谢谢你的回复,但我想执行一个有条件的'INSERT INTO'语句:)
      【解决方案6】:

      INSERT 语法不能有WHERE 子句。你会发现INSERTWHERE 子句的唯一一次是当你使用INSERT INTO...SELECT 语句时。

      第一个语法已经正确。

      【讨论】:

      • 好的,谢谢,我会尝试优化第一个查询以满足我的需要:)
      • 是的,我多么愚蠢只需要在选择查询中调用同一个表并将其与我想要的值匹配.. :) 非常感谢 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2023-01-11
      相关资源
      最近更新 更多