我已经为此苦恼了两个小时。我想选择或插入一条记录。如果记录存在,请选择他的 ID,否则将其插入并获取新插入的 ID。现在我正在尝试运行它,但我仍然遇到错误
SELECT CASE WHEN (SELECT COUNT(*) FROM Domains WHERE Domain = @domain)>0
THEN
(SELECT Domain_ID FROM Domains WHERE Domain = @domain)
ELSE
INSERT INTO Domains(Domain_ID,Domain,Disabled,Description) VALUES(@Domain_ID,@Domain,@Disabled,@Description);
最佳答案
您的案例缺少 End
Case when (something) then (Some)
else (another thing) end
无论如何,你的 else 必须返回一个 select,一个 insert 不会返回任何东西。 如果你想插入如果不存在然后返回插入的值(或返回如果存在) 这样做:
INSERT INTO Domains(Domain_ID,Domain,Disabled,Description) VALUES(@Domain_ID,@Domain,@Disabled,@Description) where not exists (select 1 from Domains WHERE Domain = @domain);
SELECT Domain_ID FROM Domains WHERE Domain = @domain
如果不存在则插入,然后返回。如果已经存在,则不插入,并返回值
2016 年 1 月编辑
最后一个查询不适用于MySql
,它是MSSQL
语法
关于MySql 如果存在选择 ELSE 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12676322/