【问题标题】:SQL - if record exists in tableA, then insert into tableBSQL - 如果表中存在记录,则插入表中
【发布时间】:2011-07-27 22:01:13
【问题描述】:

我正在使用mysql数据库,如果产品代码已经存在于tableA中,我正在尝试向tableB中插入一条记录。

我认为 CASE 语句会起作用,但我在网络上找不到任何进一步的帮助。 这是我目前所拥有的:

CASE (SELECT COUNT(*) FROM tableA WHERE tableA.item_code = '$pcode') > 1 
THEN INSERT INTO tableB(item_id, serial_number, used) 
VALUES ('$iid','$sns','$used') END

非常感谢任何帮助。 干杯

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    你只需要写一个普通的旧插入语句:

    insert into tableB(item_id, serial_number, used)
    select '$iid', '$sns', '$used'
    where exists (select 1 from tableA where item_code = '$pcode')
    

    【讨论】:

    • 对不起,我应该提到,变量$iid、$sns和$used是在php代码中计算出来的,而不是从数据库表中计算出来的。 (也就是说,我确实需要根据与 $pcode 的比较从 tableA 中获取 $iid)@DerekKromm
    • 所以您应该能够将这些变量添加到您的 sql 命令中。您如何尝试运行插入?我不熟悉 PHP,但这应该只是将你的 SQL 字符串连接在一起或使用参数的问题。
    • 是的,它直接将它们放入:“INSERT INTO tableB(item_id, serial_number, used) VALUES ((SELECT tableA.item_id from va_items WHERE tableA.item_code = '$pcode'),'$sns ','$used') WHERE EXISTS (SELECT * FROM tableA WHERE tableA.item_code = '$pcode')" 干杯@DerekKromm
    • 哦,sql错误是:你的SQL语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“WHERE EXISTS (SELECT * FROM tableA WHERE tableA.item_code = 'ADE12020572CH')' 附近使用正确的语法
    • 那句话看起来很混乱。我假设你在复制/粘贴/混淆时错过了一些东西,但试试这个:INSERT INTO tableB(item_id, serial_number, used) SELECT item_id,'$sns','$used' from va_items WHERE item_code = '$pcode'跨度>
    【解决方案2】:
    insert into tableB(item_id, serial_number, used)
    select item_id, '$sns', 1
    from tableA where item_code = '$pcode'
    

    【讨论】:

      【解决方案3】:

      这里:

      INSERT INTO tableB
                  (productcode)
      SELECT productcode
      FROM   tableC c
      WHERE  EXISTS (SELECT productcode
                     FROM   tableA a
                     WHERE  a.productcode = c.productcode) 
      

      【讨论】:

        【解决方案4】:

        或者,如果您在 item_codes 上放置外键,您可以按照通常的方式插入记录

        INSERT INTO tableB(item_id, serial_number, used)  VALUES ('$iid','$sns','$used')
        

        如果发生异常则捕获异常...

        见:Handling foreign key exceptions in PHP

        这种方法的好处是数据库会自动为您执行规则。

        【讨论】:

          猜你喜欢
          • 2021-09-03
          • 2014-03-08
          • 2014-04-04
          • 1970-01-01
          • 2021-11-14
          • 1970-01-01
          • 2018-06-09
          • 2018-12-26
          • 1970-01-01
          相关资源
          最近更新 更多