Создание дублирующихся строк в одной таблице TSQL - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать дубликаты определенных строк в одной таблице с разными первичными ключами. В моей таблице много столбцов, поэтому я не могу указать столбцы . До сих пор я пытался скопировать интересующие меня строки во временную таблицу, например:

select * into #Temp from MyTable where col = value

Но затем, чтобы вставить значения из #Temp обратно в MyTable, мне пришлось бы

  1. Включить идентификационную вставку, чтобы можно было вставлять все строки без указания каждого из многочисленных столбцов
  2. Обновлять каждую строку в #Temp, чтобы иметь новые ключи, отличные от тех, что в MyTable

Есть ли более элегантное решение, чем то, как я предложил создать дублирующиеся строки в таблице?

Таблица в качестве визуального примера будет выглядеть следующим образом:

MyTable ( до)

|---------------------|------------------|------------------|
|      Heading 1      |     Heading 2    |     Heading 2    |
|---------------------|------------------|------------------|
|          1          |      'abc'       |      29573       |
|---------------------|------------------|------------------|
|          2          |      'bob'       |      57302       |
|---------------------|------------------|------------------|

MyTable (после)

|---------------------|------------------|------------------|
|      Heading 1      |     Heading 2    |     Heading 2    |
|---------------------|------------------|------------------|
|          1          |      'abc'       |      29573       |
|---------------------|------------------|------------------|
|          2          |      'bob'       |      57302       |
|---------------------|------------------|------------------|
|          3          |      'abc'       |      29573       |
|---------------------|------------------|------------------|
|          4          |      'bob'       |      57302       |
|---------------------|------------------|------------------|

К сожалению, ближайший ответ указал столбцы, которые не работают для меня: Как SQL создать дубликаты записей

Ответы [ 2 ]

1 голос
/ 11 января 2020

Я не уверен, что вы подразумеваете под "не могу указать столбцы". Что мешает вам сделать это? Если это просто количество столбцов для ввода, и если вам нужно перечислить все столбцы, кроме одного, и не хотите его печатать, вы можете использовать малоизвестную функцию в SSMS. Нажмите на папку столбцов рассматриваемой таблицы и перетащите в новое окно. Это даст вам список разделенных запятыми всех столбцов. Удалите столбец ID, затем выберите этот оставшийся список столбцов в таблицу #temp.

0 голосов
/ 11 января 2020

Я запутался с повторяющимся именем столбца, заголовком 2, как до, так и после MyTable. Тем не менее, я предположил, что вы можете набрать опечатку, и предположил, что второй заголовок 2 должен быть заголовком 3. Следующие SQL выполняли дублирование строки, создавая декартово произведение MyTable и сохраняя его в # Temp.

create table #myTable (
heading_1 int,
heading_2 varchar(max),
heading_3 varchar(max)
)
insert into #myTable values(1, 'abc', '29573');
insert into #myTable values(2, 'bob', '57302');

select 
    ROW_NUMBER() OVER(ORDER BY t1.heading_2 ASC) heading_1
    ,t1.heading_2
    ,t2.heading_3 
into #Temp
from 
#myTable t1, #myTable t2

Для получения дополнительной информации информацию об использовании row_number (), посетите здесь .

Надеюсь, эта помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...