Получить часть таблицы и получить 2 таблицы 1 обновляется SQL Server - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть таблица типа:

id NameColumn 
-------------
1  var
2  var2 
3  var3
4  var4
5  var5
...  ...
n  varn

Есть ли способ, которым я могу получить часть этой таблицы, скажем, первые 3, и добраться до таблиц (второй в поле 'id'')):

TABLE1:

id NameColumn 
-------------
1  var
2  var2 
3  var3

TABLE2:

id NameColumn 
-------------
1  var4
2  var5
3  var6
4  var7
...  ...
n  varn

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Посмотрите на этот пример скрипта.Это то, что вы имели в виду?

DECLARE @Table1 TABLE(
        ID INT IDENTITY,
        Name VARCHAR(20)
)
DECLARE @Table2 TABLE(
        ID INT IDENTITY,
        Name VARCHAR(20)
)
INSERT INTO @Table1 (Name) SELECT 'A'
INSERT INTO @Table1 (Name) SELECT 'B'
INSERT INTO @Table1 (Name) SELECT 'C'
INSERT INTO @Table1 (Name) SELECT 'D'

DECLARE @N INT
SELECT  @N = 2

INSERT INTO @Table2
SELECT  Name
FROM    @Table1 t1 
WHERE   ID NOT IN   (
                        SELECT  TOP (@N)
                                ID
                        FROM    @Table1 
                        ORDER BY    ID
                    )
DELETE FROM @Table1
WHERE   ID NOT IN   (
                    SELECT  TOP (@N)
                            ID
                    FROM    @Table1 
                    ORDER BY    ID
                )

SELECT  *
FROM    @Table1
SELECT  *
FROM    @Table2
0 голосов
/ 17 февраля 2011

Попробуйте это ..

TABLE1:

SELECT TOP 3 *
  FROM <YOUR_TABLE>
ORDER BY ID

TABLE2:

SELECT *
  FROM ( 
        SELECT ROW_NUMBER() OVER(ORDER BY ID) AS ID, 
               NameColumn
          FROM <YOUR_TABLE>
       )

Чтобы вставить в новую таблицу, попробуйте:

INSERT INTO <YOUR_NEW_TABLE>
    SELECT *
      FROM ( 
            SELECT ROW_NUMBER() OVER(ORDER BY ID) AS ID, 
                   NameColumn
              FROM <YOUR_TABLE>
           )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...