sql - 如何从 table1 中选择前 500 行并将它们插入到 table2?

标签 sql tsql insert

我定义了完全相同的 2 个表:t2 和 t1。

t2 有 1000 行,t1 完全为空。

如何从 t2 中选择前 500 行并将它们插入到 t1?

最佳答案

我将使用“emptyTable”和“populatedTable”,因为这些问题令人困惑

重要 TOP没有 ORDER BY 会给出 500 行任意行。表从来没有隐含的或自然的顺序

INSERT INTO emptyTable
SELECT TOP 500 * 
FROM populatedTable
ORDER BY What -- need this to define TOP 500

此处缺少列列表通常被定义为不好的做法,但仅在以下情况下才有效
  • 表格相同
  • emptyTable
  • 中没有 IDENTITY 列

    编辑:

    需要 ORDER BY 来保证行顺序。看到这些。它也在ANSI标准中
  • http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/05/20/without-order-by-there-is-no-default-sort-order.aspx
  • http://blogs.msdn.com/b/conor_cunningham_msft/archive/2008/08/27/no-seatbelt-expecting-order-without-order-by.aspx
  • 关于sql - 如何从 table1 中选择前 500 行并将它们插入到 table2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8668511/

    相关文章:

    mysql - 在没有主键的MySQL中设置差异

    sql-server - 从 FOR XML PATH 中删除 XML 标签

    mysql - Kohana - 插入记录忽略重复

    c# - 填充 DataTable 时出现 AccessViolationException

    c# - 在 C# 中处理相互引用的多个对象

    c# - 参数化查询

    sql - 更新如何工作?

    sql-server - SQL 中的 ISNULL 和隐式数据类型转换

    sql - 在单个查询中将行插入多个表,从涉及的表中选择

    sql - 插入 INTO NOT EXISTS SQL Access