当前位置: 首页 > 面试题库 >

MySQL条件插入

毋炳
2023-03-14
问题内容

我在形成条件插入时遇到困难

我有x_table的列(实例,用户,项目),其中实例ID是唯一的。我只想在用户已经没有给定项目的情况下插入新行。

例如,尝试插入instance = 919191 user = 123 item = 456

Insert into x_table (instance, user, item) values (919191, 123, 456) 
    ONLY IF there are no rows where user=123 and item=456

朝正确方向的任何帮助或指导将不胜感激。


问题答案:

如果您的DBMS在执行插入操作时不限制从哪个表中选择,请尝试:

INSERT INTO x_table(instance, user, item) 
    SELECT 919191, 123, 456
        FROM dual
        WHERE NOT EXISTS (SELECT * FROM x_table
                             WHERE user = 123 
                               AND item = 456)

在这里,dual是一个只有一行的表(最初在Oracle中找到,现在也在mysql中)。逻辑是SELECT语句生成具有所需值的单行数据,但仅当尚未找到这些值时才这样做。

或者,查看MERGE语句。



 类似资料:
  • 问题内容: 如何停止MySQL中的竞争条件?当前的问题是由一个简单的算法引起的: 从表中选择一行 如果不存在,将其插入 然后会得到重复的行,或者如果您通过唯一/主键阻止它,则会出现错误。 现在,通常我认为事务在这里有所帮助,但是由于该行不存在,所以事务实际上并没有帮助(或者我是否错过了什么?)。 LOCK TABLE听起来有些矫kill过正,尤其是如果该表每秒更新多次。 我唯一想到的其他解决方案是

  • 问题内容: 是否有只查询记录的查询,如果不存在,则插入?我不想重复更新或替换。寻找一个查询解决方案,寻找其他答案,但不是我真正想要的。 表: 伪查询: 问题答案: 使用-与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前会删除该旧行。 http://dev.mysql.com/doc/refman/5.0/en/rep

  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复表达: 或包装查询

  • 我需要创建一个在表中插入或不插入数据的条件。有11个字段,从6到11,用户可以填写,也可以不填写。如果没有,它就不能保存此表中的任何数据。代码已创建,但正在进行插入。有人知道怎么修理吗?谢谢!

  • 主要内容:使用 MySQLi 和 PDO 向 MySQL 插入多条数据,实例 (MySQLi - 面向对象),实例 (MySQLi - 面向过程),实例 (PDO),使用预处理语句,实例 (MySQLi 使用预处理语句)使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句。 以下实例向 "MyGuests" 表添加了三条新的记录: 实例 (MySQLi - 面向对象) <?php $servername = "loc

  • 本文向大家介绍用一条mysql语句插入多条数据,包括了用一条mysql语句插入多条数据的使用技巧和注意事项,需要的朋友参考一下        假如有一个数据表A: id name title addtime         如果需要插入n条数据 :    之前我的想法会是,通过数据构造多条插入语句,循环调用 。如:         之后发现了sql的insert语句可以一次插入多条: