我意识到在同一主题上有很多回答SO问题,但我似乎无法使用任何这些信息来弄清楚我的查询有什么问题。
我正在尝试将记录插入到我的表中,只有具有相同database_owner
和database_name
(这是我的两个列名称)的记录尚不存在。
我正在使用查询:
INSERT INTO users_databases (database_name, database_key, database_secret, database_owner)
VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101-21f39e6ac8d9', 'x@x.com')
WHERE
NOT EXISTS
(SELECT database_name FROM uses_databases WHERE database_name = 'DB1' AND database_owner = 'x@x.com');
但我收到错误Incorrect syntax near the keyword 'WHERE'.
我还应该指出运行查询
SELECT database_name
FROM uses_databases
WHERE database_name = 'DB1' AND database_owner = 'x@x.com'
会返回记录。
我哪里可能出错?从我在其他问题中看到的内容来看,这看起来是正确的。但显然不是。 :-)任何建议都会非常有用。
答案 0 :(得分:17)
最简单的解决方案是这样的:
IF NOT EXISTS (SELECT database_name FROM uses_databases WHERE database_name = 'DB1' AND database_owner = 'x@x.com')
INSERT INTO users_databases (database_name, database_key, database_secret, database_owner)
VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101-21f39e6ac8d9', 'x@x.com');
答案 1 :(得分:2)
您可以执行以下操作,必须正常工作
INSERT INTO users_databases (database_name, database_key, database_secret, database_owner)
VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101- 21f39e6ac8d9', 'x@x.com')
WHERE 1
NOT IN
(SELECT 1 FROM uses_databases WHERE database_name = 'DB1' AND database_owner = 'x@x.com');
答案 2 :(得分:1)
您也可以
INSERT INTO users_databases (database_name, database_key, database_secret, database_owner)
SELECT 'DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2',
'367123d8-e5a7-46a0-8101-21f39e6ac8d9', 'x@x.com'
WHERE
NOT EXISTS
(SELECT database_name
FROM uses_databases
WHERE database_name = 'DB1' AND database_owner = 'x@x.com'
)