首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从select插入两个不同的行

从select插入两个不同的行
EN

Stack Overflow用户
提问于 2014-11-28 05:20:18
回答 2查看 47关注 0票数 0

嗨,我有一个查询,它返回一个表中存在但在另一个表中不存在的客户列表。对于每个返回的customer_id,我需要在profile表中添加2行。

如何在sql中编写这两行的插入语句?

代码语言:javascript
运行
复制
select * FROM
(select * 
from customer c 
left outer join profile cp 
on cp.customer_id=c.global_id 
order by c.global_id) as A
where id is NULL;

谢谢!

EN

Stack Overflow用户

发布于 2014-11-28 06:13:46

对于少量行,CROSS JOIN (与FROM列表中的,相同)到表达式是最短、最简单的方法:

代码语言:javascript
运行
复制
INSERT INTO profile (<list of columns>)
SELECT <list of columns>
FROM  (
   SELECT <list of columns>
   FROM   customer c 
   LEFT   JOIN profile p ON p.customer_id = c.global_id 
   WHERE  p.customer_id IS NULL
   ) A
, (VALUES (1), (2)) dummy(col_name)
ORDER  BY global_id;

SELECTINSERT中使用显式列列表,以避免在以后更改任何内容时出现意外结果。

您可能不会对两个相同的行执行INSERT操作。您可以立即在子查询dummy中提供有用的值。可能使用显式类型转换。像这样:

代码语言:javascript
运行
复制
(VALUES ('foo'::text), ('bar')) dummy(col_name)
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27178781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档