Microsoft SQL Server,选择一个ID并插入到另一个表中

星期三

我有用于将某些行插入到下表中的代码-我正在从已经填充的另一个表中获取ID。在此处使用带有C#和Razor的Compact 4.0本地数据库。

从sortedWord表获取ID:

Id | SortedWord
0    act

将数据插入单词表:

Id | Word | SortedId
0    cat    0
1    tac    0

    for (var i = 0; i < words.Count(); i++){
        queryString = "SELECT Id FROM SortedWords WHERE SortedWord = @0";
        var sortedId = db.QuerySingle(queryString, sortWord(words[i]));
        queryString = "INSERT INTO Words (Word, SortedId) VALUES (@0, @1)";
        db.Query(queryString, words[i], sortedId.Id);
    }

问题是select语句效率低下,是否可以在没有select语句的情况下执行此操作,例如select into:我在这里看到了一些示例,但无法理解。http://technet.microsoft.com/zh-CN/library/ms189872(v=sql.105).aspx

加雷斯

是的,您可以简单地使用:

INSERT Words (Word, SortedID)
SELECT  @0, ID
FROM    SortedWords
WHERE   SortedWord = @1;

然后,您的C#将变为:

queryString = " INSERT Words (Word, SortedID) SELECT @0, ID FROM SortedWords WHERE SortedWord = @1;"
db.Query(queryString, words[i], sortedwords[i]);

或者,您可以将第一个查询嵌入第二个查询:

queryString = "INSERT INTO Words (Word, SortedId) VALUES (@0, (SELECT TOP 1 Id FROM SortedWords WHERE SortedWord = @1))";
db.Query(queryString, words[i], sortWord(words[i]));

但是,如果您使用的是SQL Server 2008或更高版本,我将进一步使用表值参数一次完成所有插入操作第一步是创建类型:

CREATE TYPE dbo.TwoStringList AS TABLE (Value1 VARCHAR(MAX), Value2 VARCHAR(MAX));

我使用了通用名称,因此类型更可重用。然后,您可以创建一个接受此类型作为参数的过程:

CREATE PROCEDURE dbo.InsertWords @StringList dbo.TwoStringList READONLY
AS
    INSERT Words (Word, SortedID)
    SELECT  sl.Value1, sw.ID
    FROM    SortedWords sw
            INNER JOIN @StringList sl
                ON sw.SortedWord = sl.Value2;

然后,您可以使用以下命令将其传递给SQL命令:

var datatable = new DataTable();
datatable.Columns.Add(new DataColumn("Value1", typeof(string)));
datatable.Columns.Add(new DataColumn("Value2", typeof(string)));

for (var i = 0; i < words.Count(); i++)
{
    var dr = datatable.NewRow();
    dr[0] = words[i];
    dr[1] = sortedwords[i];
    datatable.Rows.Add(dr);
}

using (var connection = new SqlConnection("your Connection String"))
using (var command = new SqlCommand("dbo.InsertWords", connection))
{
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(new SqlParameter{ 
                                            ParameterName = "@StringList", 
                                            SqlDbType = SqlDbType.Structured,
                                            TypeName = "dbo.TwoStringList",
                                            Value = datatable
                                            });
    connection.Open();
    command.ExecuteNonQuery();
}

SQL小提琴上的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除重复的记录,并在sql的另一个表中插入delete的ID

来自分类Dev

从SQL Server链接表中插入到另一个Access.accdb中进行选择

来自分类Dev

sql server如果不存在则插入,并将插入的id插入另一个表

来自分类Dev

根据位置将一个表的列安排为Microsoft SQL Server中另一表中的行

来自分类Dev

SQL Server 2008 R2:选择另一个表中存在的记录

来自分类Dev

如何在Microsoft SQL Server中将数据从一个表复制到另一个表

来自分类Dev

从一个表到另一个表的SQL Server数据库批量插入

来自分类Dev

基于TSQL / Microsoft SQL Server中另一个字段的字段的数据透视值

来自分类Dev

使用MERGE的Microsoft Sql Server语句对表执行,但从不对另一个表执行

来自分类Dev

T-SQL仅使用变量中的值而不是一列将行的副本从一个表插入到另一个表

来自分类Dev

将数据行从C#中的另一个sql表插入到sql表中

来自分类Dev

如何编写一个游标在表中并插入到另一个表中的SQL脚本

来自分类Dev

SQL将数据从另一个表插入到表中

来自分类Dev

将特定表存储到SQL Server中的另一个文件?

来自分类Dev

如何使用查询结果选择到SQL Server中的另一个表

来自分类Dev

将另一个层次结构插入到sql表中

来自分类Dev

合并两个列的值,并插入到ms sql中的另一个表中

来自分类Dev

从另一个表进行SQL插入

来自分类Dev

将记录从一个表插入到另一个表,而不违反SQL Server数据库中的任何约束

来自分类Dev

Microsoft SQL Server:触发以检查由另一个字段分组的一个字段的总和是否不超过特定值?

来自分类Dev

SQL Server触发器信息插入到另一个表中

来自分类Dev

将ID从一个表传递到另一个表,并在SQL Server中获得总联合结果

来自分类Dev

SQL Server:插入到表中,从另一个表中选择

来自分类Dev

如何使用SQL将具有不同选择条件的多列插入到另一个表中

来自分类Dev

Sql从一个表插入id到另一个表中的条目

来自分类Dev

从多个表中选择,插入另一个表 Oracle SQL 查询

来自分类Dev

将一个表中的值插入到 SQL Server 中的另一个表中

来自分类Dev

从 SQL Server 中的另一个数据库表插入选择

来自分类Dev

如何根据 SQL Server 中的另一个表列值限制插入到表?

Related 相关文章

  1. 1

    删除重复的记录,并在sql的另一个表中插入delete的ID

  2. 2

    从SQL Server链接表中插入到另一个Access.accdb中进行选择

  3. 3

    sql server如果不存在则插入,并将插入的id插入另一个表

  4. 4

    根据位置将一个表的列安排为Microsoft SQL Server中另一表中的行

  5. 5

    SQL Server 2008 R2:选择另一个表中存在的记录

  6. 6

    如何在Microsoft SQL Server中将数据从一个表复制到另一个表

  7. 7

    从一个表到另一个表的SQL Server数据库批量插入

  8. 8

    基于TSQL / Microsoft SQL Server中另一个字段的字段的数据透视值

  9. 9

    使用MERGE的Microsoft Sql Server语句对表执行,但从不对另一个表执行

  10. 10

    T-SQL仅使用变量中的值而不是一列将行的副本从一个表插入到另一个表

  11. 11

    将数据行从C#中的另一个sql表插入到sql表中

  12. 12

    如何编写一个游标在表中并插入到另一个表中的SQL脚本

  13. 13

    SQL将数据从另一个表插入到表中

  14. 14

    将特定表存储到SQL Server中的另一个文件?

  15. 15

    如何使用查询结果选择到SQL Server中的另一个表

  16. 16

    将另一个层次结构插入到sql表中

  17. 17

    合并两个列的值,并插入到ms sql中的另一个表中

  18. 18

    从另一个表进行SQL插入

  19. 19

    将记录从一个表插入到另一个表,而不违反SQL Server数据库中的任何约束

  20. 20

    Microsoft SQL Server:触发以检查由另一个字段分组的一个字段的总和是否不超过特定值?

  21. 21

    SQL Server触发器信息插入到另一个表中

  22. 22

    将ID从一个表传递到另一个表,并在SQL Server中获得总联合结果

  23. 23

    SQL Server:插入到表中,从另一个表中选择

  24. 24

    如何使用SQL将具有不同选择条件的多列插入到另一个表中

  25. 25

    Sql从一个表插入id到另一个表中的条目

  26. 26

    从多个表中选择,插入另一个表 Oracle SQL 查询

  27. 27

    将一个表中的值插入到 SQL Server 中的另一个表中

  28. 28

    从 SQL Server 中的另一个数据库表插入选择

  29. 29

    如何根据 SQL Server 中的另一个表列值限制插入到表?

热门标签

归档