我在形成条件插入时遇到困难
我有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语句生成具有所需值的单行数据,但仅当尚未找到这些值时才这样做。
dual
或者,查看MERGE语句。