首页 > 解决方案 > 使用具有不同行数的两个选择查询插入数据

问题描述

我希望在从前两个表中获取数据的同时将数据输入到第三个表中。在这种情况下,第一个表是profile,第二个表是menu,第三个表是profile_menu。我的目标是将菜单映射到特定的配置文件。实际上,一个配置文件可以映射到多个菜单。我正在使用以下查询:

INSERT INTO profile_menu(item_id,profile_id) (
Select (select id_profile from profile where name = 'XYZ' and site = 46) as profile,
(SELECT  m.id_menu_item FROM menu m WHERE names IN ('menu1'
,'menu1'
,'menu2'
,'menu3'
,'menu4'
,'menu5')) as menus
from dual);

运行此程序时,我收到“01427. 00000 -”单行子查询返回多于一行“”此错误。我知道我在选择配置文件时需要相同的行,但我不知道如何实现这一点。

如果有人可以帮忙。

谢谢。

标签: sqloracle11g

解决方案


如果我理解,请使用join

select p.id_profile, m.id_menu_item
from profile p cross join
     menu m 
where p.name = 'XYZ' and p.site = 46 and
      m.name in ('menu1' ,'menu1' ,'menu2' ,'menu3' ,'menu4' ,'menu5');

这将返回多行。这大概就是你想要的。


推荐阅读