mysql - MySQL - INSERT INTO SELECT 使用列名和值的子查询
问题描述
在我公开的示例中,这是一个可以通过许多其他方式简单解决的问题,但在实际情况中,我的子查询更复杂,但解决我自己问题的原理是相同的。很可能是语法问题,所以我将问题简化为最简单的形式。
假设我有以下表格:
/* contents_table */
id │ field1 field3
════╪════════════════════
1 │ os devices_os
/* os_table */
id │ devices_os
════╪════════════
1 │ android
2 │ ios
/* my_table */
id │ os
════╪═════════
│
contentsTable.field1
保存我需要设置的列的名称MyTable
, contentsTable.field2
保存os_table
我需要取值的列的名称。如果我以传统方式执行此操作,这不是问题,因为:
INSERT INTO my_table (os)
SELECT 'devices_os'
FROM os_table
my_table
将根据我的需要填写:
/* my_table */
id │ os
════╪═════════
1 │ android
2 | ios
我需要做的是完成同样的结果,但使用子查询。使用同样的例子,这里有一些错误的尝试:
INSERT INTO my_table (SELECT field1 FROM contents_table)
SELECT (SELECT field2 FROM contents_table)
FROM os_table;
INSERT my_table (SELECT field1 FROM contents_table)
VALUES (SELECT field2 FROM contents_table)
FROM os_table;
INSERT INTO my_table SELECT CONCAT('(', '(SELECT field1 FROM contents_table)', ')')
SELECT ( SELECT CONCAT('`', '(SELECT field2 FROM contents_table)', '`') )
FROM os_table;
似乎有可能,但我无法弄清楚。请赐教!
解决方案
推荐阅读
- c# - System.ArgumentException HResult=0x80070057 Message=Stream 现在可写参数名称:stream
- algorithm - 我怎样才能重写这个问题,以便有原始的解决方案?
- python - Keras - 使用 flow_from_dataframe 的多输入模型
- javascript - 如何在 JavaScript 中对画布图像进行灰度化?
- python - Python:如何在 2 个不同的列上获取唯一值?
- c# - 从移动设备访问托管在 localhost 上的 ASP.NET Core 2.1 Web 应用程序
- javascript - JavaScript 构造函数 - JavaScript 如何确定构造函数?
- c# - 异步更新属性
- python - 在python 3.X中用不同长度的列表反转字典
- c++ - 使用 CMake 和 MinGW 在 Windows 上使用 Boost 1.68.0 编译 C++