当前位置: 首页 > 面试题库 >

如何使用查询值将记录插入SQL?

司徒瀚
2023-03-14
问题内容

设想

我需要每天通过电子表格(唯一可用的选项)更新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

数据库设置

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

//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

问题

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

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

对此:

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语句,它就可以工作。



 类似资料:
  • 我正在使用mssql。插入记录后,我想获取数据的id。但我不知道该怎么做。我的代码如下。请给我答案。 Insert工作正常,但控制台日志[未定义]。。。。 这是表的ddl 在GO上设置ANSI\U NULL,在GO上设置QUOTED\U IDENTIFIER。[特征]( [id]nvarchar NOT NULL CONSTRAINT[DF\u Feature\u id]DEFAULT(CONVE

  • Val1 Val2 Val3 Val4 Val5 Val6 Val7 Val8 Val9 Val10 Val11 Val12 Col1 Col2 Col3 Col4 Col5 Col6 Val1 Val2 Val3 Val4 Col5 Val5 Val1 Val2 Val3 Val4 Col6 Val6 Val1 Val2 Val3 Val4 Col7 Val7 Val1 Val2 Val3 Va

  • 问题内容: 我正在使用CakePHP v3.x,并且试图弄清楚如何通过迁移工具插入一些记录。该文档仅列出了用于修改架构的方法。我是否需要使用原始SQL手动插入记录? 问题答案: CakePHP 3的Migration插件是Phinx包装器插件,因此可以使用以下方法添加记录: 例如,你可以使用添加新用户上: - 如果使用,请不要忘了在迁移文件的顶部添加。 对于CakeDC的Migration插件,您

  • 问题内容: 我在MySQL中用一个表创建了一个数据库: 我尝试使用Java插入记录: 输出似乎成功返回: 但是,当我从MySQL中选择时,插入的记录为空: 为什么插入空白记录? 问题答案: 不,这是行不通的(不适用于真实数据): 更改为: 使用该sql创建一个PreparedStatment,并使用索引插入值:

  • 问题内容: 当我尝试使用此查询时,我收到一条错误消息,指出Perameter电子邮件不存在,我确定变量:email,login_pass,payment_method,operateur是有效的并且存在。 我尝试删除引号,但我得到了 您的Sql语法有错误,请在第1行的’:email,:login_pass,:payment_method,:avecpuce)’附近查看与您的SQL Server对应

  • 问题内容: 这个问题已经在这里有了答案 : 如何在MySQL中“如果不存在则插入”? (10个回答) 7年前关闭。 我有一个mysql表… 我只想添加不在列中的记录。 对于前 我有以下记录要添加到表中 我不想添加,因为它已经在列中。 那么,查询是否有可能先检查记录然后插入? 目前,我正在使用..首先,我先进行记录,然后对其进行匹配,然后再对其进行匹配。 但是,我只想处理一个查询。 问题答案: 您可