我试图插入到表中,但仅限于唯一。我可以根据一个条件执行此操作,但不能同时执行两个?我不确定我要去哪里错了?它不会返回错误,只是表现得好像只有一个条件一样。
简单表,自动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=1
和status=5
中已经存在,则插入一个新条目type=1
和status=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;
有什么建议吗?还是我需要做一个单独的电话来确定是否存在多个条件。 谢谢。
答案 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不兼容。所以我做了另一种方式!
(解决当前问题的方法完全不同,与本次讨论无关)。