我试图避免编写不同的SQL查询来实现以下场景:
我有一个名为Values的表:
价值观:
id INT (PK)
data TEXT
我想检查表中是否存在某个数据,如果它返回它的id,如果它不存在,则插入它并返回它的id。
(非常)天真的方式是:
select id from Values where data = "SOME_DATA";
如果id不为null,那么很好用。 如果id为null则为:
insert into Values(data) values("SOME_DATA");
然后再次选择它以查看其ID或使用返回的ID。
我试图在一行中使上述功能。 我想我已经接近了,但我还没能做到: 到目前为止我得到了这个:
select id from Values where data=(COALESCE((select data from Values where data="SOME_DATA"), (insert into Values(data) values("SOME_DATA"));
我试图利用第二个选择将返回null然后返回COALESCE的第二个参数这一事实。到目前为止没有成功。我错过了什么?
提醒一下,这是一个sqlite3引擎! :P
谢谢!