开发者社区 问答 正文

MySQL条件插入

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

我有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 朝正确方向的任何帮助或指导将不胜感激。

展开
收起
保持可爱mmm 2020-05-10 19:28:25 398 分享 版权
1 条回答
写回答
取消 提交回答
  • 如果您的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语句。来源:stack overflow

    2020-05-10 19:28:39
    赞同 展开评论