SQL插入到不存在的xxx

时间:2018-07-17 07:34:25

标签: mysql sql-insert

我试图插入到表中,但仅限于唯一。我可以根据一个条件执行此操作,但不能同时执行两个?我不确定我要去哪里错了?它不会返回错误,只是表现得好像只有一个条件一样。

简单表,自动ID,状态,类型

INSERT INTO alarms (status, type) 
SELECT * FROM (SELECT '2', '1') AS tmp
WHERE NOT EXISTS
( SELECT type FROM alarms WHERE (type = '1')) LIMIT 1;

这很好用,只有在没有其他类型为1的条目时才插入。 我想有多个条件,即如果表type=1status=5中已经存在,则插入一个新条目type=1status=2。我已经尝试了以下方法(有一些变化),但无法使其正常工作。没有错误,只是表现得好像只有一个条件。

 INSERT INTO alarms (status, type) 
    SELECT * FROM (SELECT '2', '1') AS tmp
    WHERE NOT EXISTS
    ( SELECT type, status FROM alarms WHERE (type = '1' AND status = '5')) LIMIT 1;

有什么建议吗?还是我需要做一个单独的电话来确定是否存在多个条件。 谢谢。

3 个答案:

答案 0 :(得分:0)

您是否尝试使用if-begin-end代替? 该代码可能更简单,但是我认为这仍然可以作为一条语句。

 If Not Exists( SELECT type, status FROM alarms WHERE (type = '1' AND status = '5'))
    Begin
    INSERT INTO alarms (status, type) values ("Y","type")
    End

答案 1 :(得分:0)

尝试使用“收藏”

INSERT INTO alarms (status, type)
SELECT status, type
FROM alarms_duplicated AS a
WHERE status = '2' AND type = '1'
GROUP BY status, type
HAVING COUNT(*) = 1

答案 2 :(得分:0)

感谢您的输入。 我看起来好像IF NOT EXIST...。WHERE将不起作用,显然WHERE语句与mySQL不兼容。所以我做了另一种方式!

(解决当前问题的方法完全不同,与本次讨论无关)。