sql - 使用具有不同行数的两个选择查询插入数据
问题描述
我希望在从前两个表中获取数据的同时将数据输入到第三个表中。在这种情况下,第一个表是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 -”单行子查询返回多于一行“”此错误。我知道我在选择配置文件时需要相同的行,但我不知道如何实现这一点。
如果有人可以帮忙。
谢谢。
解决方案
如果我理解,请使用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');
这将返回多行。这大概就是你想要的。
推荐阅读
- python-3.x - Difference in the receive and send method in a websocket
- pdf - JavaFX - 以编程方式设置目标路径以直接将节点打印到 pdf 文件
- java - 从 jar 文件中的方法调用外部类
- r - 使用 ggplot2 在直方图中显示百分比而不是计数 R
- php - 如何在php中转换参数值
- arrays - Numpy 数组矩阵堆叠
- html - 谷歌字体(nunito)在 Chrome 上渲染良好,但在 Firefox 上不行
- mysql - 无法更改 MySQL root 密码
- stripe-payments - 使用 Stripe 在交易前计算货币转换
- angular - 如何获取从 ionic 3 中的多个选项单击的按钮的值