sql插入

zynd9foi  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(215)

我试图插入到一个表中,但只有在唯一的情况下。我可以用一个标准来做这件事,但不能用两个?我不知道我哪里出错了?它不返回错误,只是表现为只有一个条件。
简单表,autoid,状态,类型

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;

有什么建议吗?或者我需要单独调用以确定是否存在多个条件。谢谢。

5ssjco0h

5ssjco0h1#

谢谢你的意见。我会看起来好像不存在。。。。where不起作用,显然where语句与mysql不兼容。所以我用了不同的方法!
(对当前问题的处理方式完全不同,与本次讨论无关)。

9w11ddsr

9w11ddsr2#

试着用“having”

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
yzuktlbb

yzuktlbb3#

你试过用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

相关问题