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

У меня есть 2 таблицы с одинаковыми столбцами, ожидая, что это userId. Я хочу скопировать все данные из первой таблицы во вторую и добавить пользовательский идентификатор пользователя в отсутствующий столбец. Пока безуспешно.

Запрос показан ниже. Вставьте Качество, Количество, Поставщик и UserId (которого нет в таблице при получении данных)

`DECLARE @UserId int = 5611; -- add this to all the data from dbo.GasStation

INSERT INTO dbo.NewGasStation (Quality, Quantity, Supplier, UserId)
SELECT * FROM dbo.GasStation -- UserId doesn't exist in this table
-- Add somehow @UserId to all the data i'm getting from GasStation in order to satisfy the column UserId in the NewGasStation`

Все данные, которые я получаю от dbo.GasStation, должны быть вставлены в dbo.NewGasStation, добавляя этот пользовательский идентификатор пользователя ко всем результатам.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
62
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вместо * явно укажите столбцы в SELECT и добавьте переменную в этот список.

DECLARE @userid integer = 5611;

INSERT INTO dbo.newgasstation
           (quality,
            quantity,
            supplier,
            userid)
           SELECT quality,
                  quantity,
                  supplier,
                  @userid
                  FROM dbo.gasstation;

Не работает, потому что @userId не существует в dbo.GasStation

S.Minchev 28.05.2019 13:45

@ С.Минчев: Да, это так. Вы можете добавить столько константных выражений, сколько хотите, они не должны существовать в таблице, они даже не могут там существовать. Просто попробуйте.

sticky bit 28.05.2019 13:46

Хорошо скажите, что студии управления sql "Msg 515, уровень 16, состояние 2, строка 16 не удается вставить значение NULL в столбец "UserId", таблица "Go41_db.dbo.NewGasStation"; столбец не допускает нулевые значения. INSERT не работает. заявление прекращено».

S.Minchev 28.05.2019 13:50

@стикибит . . . Вот это да. Точно в то же время.

Gordon Linoff 28.05.2019 14:28

Просто добавьте @UserId в список SELECT:

INSERT INTO dbo.NewGasStation (Quality, Quantity, Supplier, UserId)
    SELECT Quality, Quantity, Supplier, @UserId
    FROM dbo.GasStation ;

Это не работает, вы не можете добавить @UserId в конце этого SELECT, потому что его нет в dbo.GasStation

S.Minchev 28.05.2019 13:43

@С.Минчев . . . Хм? Это константа. Конечно, вы можете включить его в SELECT.

Gordon Linoff 28.05.2019 14:27
INSERT INTO dbo.NewGasStation (Quality, Quantity, Supplier, UserId)
SELECT Quality, Quantity, Supplier, '5611' FROM dbo.GasStation

должен помочь (при условии, что имена столбцов одинаковы для обеих таблиц)

Убедитесь, что таблица NewGasStation не существует при запуске этого

Select Quality, Quantity, Supplier,5611 as UserId
into NewGasStation
from GasStation

Ну, проблема в том, что уже добавлены некоторые данные, поэтому я не могу этого сделать :)

S.Minchev 28.05.2019 13:48

Вам также не нужно различать столбцы, если вы просто хотите скопировать их все. Просто используйте *.

Что-то вроде этого:

DECLARE @UserId integer = 5611;

INSERT INTO [Target]
SELECT *, @UserId FROM [Source]

Другие вопросы по теме