我有id列和param列的表</ p>
我尝试仅在此参数不存在的情况下添加一些参数
例如我的表是:
+--+-----+
|id|param|
+--+-----+
|2 |a |
+--+-----+
|2 |b |
+--+-----+
|3 |a |
+--+-----+
|3 |b |
+--+-----+
|4 |a |
+--+-----+
|4 |b |
+--+-----+
|4 |c |
+--+-----+
现在我尝试将“c” param 添加到没有c param的所有id
我怎么能在一个SQL查询中做到这一点? (我不会在示例参数中添加硬编码像“c”的参数,我不需要从任何其他表中获取它...)
答案 0 :(得分:1)
您可以使用insert . . . select
执行此操作。 select
部分只需找到没有该参数的id
:
insert into t(id, param)
select id, 'C'
from t
group by id
having sum(case when param = 'C' then 1 else 0 end) = 0;
答案 1 :(得分:0)
如果没有匹配,您可以在MERGE ... SELECT
插入时执行此操作。
MERGE INTO mytable t
USING ( SELECT DISTINCT id, 'C'
FROM mytable
) as i (key, val)
ON id=key and param=val
WHEN NOT MATCHED THEN
INSERT (id,param) VALUES (key,val)