如何将带有查找值的记录插入到 SQL 中?

2024-04-08

Scenario

我需要每天通过电子表格更新 SQL 2008 数据库(唯一可用的选项)。格式非常基本,但可能有数百万条记录。 Column1 和 Column3 将具有许多预定义的重复值,这些值已提取到单独的表中。

电子表格样本

Column1 Column2 Column3
Apple   10      Red
Apple   20      Red
Apple   15      Blue
Apple   21      Green
Orange  10      Orange
Orange  7       Orange
Orange  9       Red
Orange  70      Blue
Orange  10      Blue

DB Setup

我的数据库设置有三个单独的表:

//Lookup_Column1
id type
1  Apple
2  Orange

//Lookup_Column3
id type
1  Red
2  Blue
3  Green
4  Orange

//Main - this is what should be inserted, after Column1
//and Column2 are matched to their respective ID's
key Column1 Column2 Column3
1   1       10      1
2   1       20      1
3   1       15      2
4   1       21      3
5   2       10      4
6   2       7       4
7   2       9       1
8   2       70      2
9   2       10      2

Question

如何编写 SQL 来插入与查找表中的信息相匹配的记录?我该怎么办:

INSERT INTO Main(Column1, Column2) VALUES ('Apple', 10, 'Red');

To this:

INSERT INTO Main(Column1, Column2) VALUES (1, 10, 1);
//pulled from lookup tables, where Apple = 1 and Red = 1

你可以尝试这样的事情:

    INSERT INTO Main(Column1, Column2, Column3) VALUES 
    (
    (SELECT id FROM Lookup_Column1 WHERE type = 'Apple'),
    10, 
    (SELECT id FROM Lookup_Column3 WHERE type = 'Red')
    );

没有任何容错能力,但只要您可以将电子表格值解析为 SELECT 语句,它就可以工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将带有查找值的记录插入到 SQL 中? 的相关文章

  • VBA Excel:将范围值分配给新范围

    我在将一个工作簿范围中的值分配给当前工作簿中的某个范围时遇到问题 当我使用 Range A1 C1 分配我的范围时 此代码工作正常 但是当我使用 Range Cells 1 1 Cells 1 3 定义我的范围时 该函数会失败 Sub Co
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 根据数据框中的内容从SQL Server删除行

    我在 SQL Server 中有一个名为的库存表dbo inventory其中包含Year Month Material and Stock quantity 我每天都会收到 csv 文件形式的新库存计数 需要将其加载到dbo invent
  • SQLite SQL 查询出现问题[重复]

    这个问题在这里已经有答案了 我正在尝试在 SQLite 3 中运行以下查询 SELECT DISTANCE latitude longitude AS distance FROM country WHERE id NOT LIKE HAVI
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • Rails 中 WHERE 子句中的 ALL 运算符

    关联关系如下图所示 InstructorStudent has many fees Fee belongs to instructor student 我想要获得在所有给定数组中具有每月详细信息的指导学生 如果其中任何一个中不存在每月详细信
  • 复杂的sql树行

    表结构 id message reply id 1 help me 0 434 love to 1 852 didn t work 434 0110 try this 852 2200 this wont 0 5465 done 0110
  • 重建数据库中的所有索引

    我有一个非常大的 SQL Server 2008 R2 数据库 1 5TB 并将在同一个表中的列之间复制一些数据 我被告知该架构有大量索引 并且想知道是否有默认查询或脚本可以重建所有索引 是否也被建议同时更新统计数据 30 个表中的每一个都
  • mysql 详细查询字符串,如通配符

    不知道如何标题我的问题 哈哈 下面是我需要的 我的数据库中的值如下所示 test example 1 test example 2 test example TD 1 这些值的长度可以不同 test example 只是一个示例 某些值将具
  • 在用户窗体终止/关闭 VBA 时调用数组

    我有一个问题 我想在用户窗体关闭时将用户窗体的内容存储在数组中 我认为我的语法正确 但似乎不会在用户窗体初始化时重新填充 我尝试将数组放入其自己的模块中 但这也不起作用 有人愿意启发我吗 示例代码 Public Sub DPArrayStu
  • 插入行而不选择任何内容?

    我正在使用 VBA 希望在特定位置插入一行而不选择它 我遇到的问题是 选择该行后 当脚本运行完毕时 电子表格会向下滚动到该行 我希望能够在不将电子表格向下滚动到插入行的情况下执行此操作 Rows i i Select ActiveCell
  • 使用 Proc sql 和 Teradata 在 SAS 中编写高效查询

    编辑 这是一组更完整的代码 它准确地显示了下面的答案所发生的情况 libname output data files jeff let DateStart 01Jan2013 d let DateEnd 01Jun2013 d proc s
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • SQL Server:当列为 NTEXT 时 IN('asd') 不起作用

    我该如何解决这个问题 where someNtext IN asd asd1 给出错误 消息 402 第 16 层 状态 1 第 XXXXX 行数据类型 ntext 和 varchar 在等于运算符中不兼容 An INlist 只是 OR
  • 合并并添加两个表中的值

    是否可以制作一个在两个表中添加值的查询 例如 假设您有两张表 id value a 1 c 2 d 3 f 4 g 5 and id value a 1 b 2 c 3 d 4 e 5 然后 当您 添加 两个表时 您将获得 id 匹配的结果
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • 使用“AND”表达式构建动态 SQL,而不混淆嵌套条件?

    总的来说 我对 php 和编码相当陌生 我有一系列条件需要测试它们是否已设置 它们是 option1 option2 option3 if isset option1 if isset option2 if isset option3 qu

随机推荐