一尘不染

MySQL条件插入

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

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


阅读 626

收藏
2020-05-17

共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语句。

2020-05-17