繁体   English   中英

SQL仅在id不存在时将新行插入MYSQL表中

[英]SQL to only insert a new row into MYSQL table if id does not already exist

我有一个名为sales的mysql数据库表,其ID为| 时间戳| timeString | 如果表中不存在ID,我想在其中插入新值的EAN。 例如,我可能要添加:

 9997a04fe3f932bf6f8e9d88f4b8dc96 | 0000003082461 | 11:07 (Thu. 22 May. 2014 | 1400716800

如果之前尚未输入ID'9997a04fe3f932bf6f8e9d88f4b8dc96',则返回数据库表。

到目前为止,我编写的SQL看起来像这样:(使用1234作为虚拟值,表中已经存在ID为1的行)

 INSERT INTO `sales`(`id`, `timeStamp`, `timeString`, `EAN`) VALUES (1,2,3,4)
    WHERE NOT EXISTS (
        SELECT `id` FROM `sales` WHERE `id` = '1'
    )

请帮助我使此SQL语句正常工作。 目前,此报告的语法错误为:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS ( SELECT `id` FROM `sales` WHERE `id` = 1 ' at line 2

将唯一索引添加到ID列,然后使用INSERT IGNORE语句

在INSERT语句之前,您需要检查数据是否存在。 如果退出,则仅向用户消息提示已存在的数据或您想要的任何数据。

像这样

     $result = mysqli_query ($con,"SELECT COUNT(id) FROM sales WHERE (id='$id')");
     $row = mysqli_fetch_row($result);
     $total_records = $row[0];
     if($total_records == 0)

     {
       INSERT INTO sales(`id`, `timeStamp`, `timeString`, `EAN`) VALUES        
       ($id,$timestamp,$timestring,$Ean);   

      } else
      { 
             --------------Enter-----
            ------------Error message------
      }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM