Нужно вставить нулевые значения в определенные столбцы моей таблицы - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь вставить значения в таблицу 1 из таблицы 2, Есть определенные столбцы из таблицы 1, где я не хочу, чтобы значения из значений из таблицы 2 Вместо этого я хотел бы вставить NULL в значения в таблице 1.

Ниже приведен пример.

insert into dbo.Student
[Number], [Timestamp], [Education], [Roll No],
[Name], [Age],[marks])

Select
[Number], [Timestamp],    
convert(nvarchar(max),dbo.Table1([a.Description Description])) as [Education],
Convert(nvarchar(50),dbo.Table2([a.Description Description])) as [Roll No], 
convert(nvarchar(50),dbo.Table3([a.Description Description])) as [Name],    
dbo.Table4([a.Description Description]) as [Age],    
convert(nvarchar(50),dbo.Table5([a.Description Description])) as [marks]    
from dbo.Data a

Я хотел бы обновить столбцы [Number], [Timestamp], [Education] до NULL и остальные столбцы, я хотел бы получить значения, из которых он выбирает прямо сейчас.

Пожалуйста, помогите

Ответы [ 4 ]

1 голос
/ 29 апреля 2019

Это можно сделать несколькими способами:

Обеспечить NULL

insert into dbo.Student
    [Number], [Timestamp], [Education], [Roll No],
    [Name], [Age],[marks])
Select
    NULL as [Number], NULL as [Timestamp], NULL as [Education],    
    Convert(nvarchar(50),dbo.Table2([a.Description Description])) as [Roll No],    
    convert(nvarchar(50),dbo.Table3([a.Description Description])) as [Name],        
    dbo.Table4([a.Description Description]) as [Age],    
    convert(nvarchar(50),dbo.Table5([a.Description Description])) as [marks]
from dbo.Data a

Избегать вставки данных в эти поля

insert into dbo.Student
    [Roll No],
    [Name], [Age],[marks])
Select
    Convert(nvarchar(50),dbo.Table2([a.Description Description])) as [Roll No],    
    convert(nvarchar(50),dbo.Table3([a.Description Description])) as [Name],        
    dbo.Table4([a.Description Description]) as [Age],    
    convert(nvarchar(50),dbo.Table5([a.Description Description])) as [marks]
from dbo.Data a

Изменить данные после вставки

После того, как вы выполните insert into dbo.Student ..., выполните:

update dbo.student set 
   [Number] = NULL,
   [Timestamp] = NULL,
   [Education] = NULL
where ...

Вы должны быть осторожны с предложением where иубедитесь, что вы меняете только те записи, которые вы недавно ввели.

0 голосов
/ 29 апреля 2019

Вы можете просто избежать этих трех столбцов в части Вставка и выделение, как показано ниже-

INSERT INTO dbo.Student
--[Number], [Timestamp], [Education], 
([Roll No],[Name], [Age],[marks])
SELECT
--[Number], [Timestamp],      
--convert(nvarchar(max),dbo.Table1([a.Description Description])) as [Education],    
CONVERT(NVARCHAR(50),dbo.Table2([a.Description Description])) AS [Roll No],    
CONVERT(NVARCHAR(50),dbo.Table3([a.Description Description])) AS [Name],        
dbo.Table4([a.Description Description]) AS [Age],    
CONVERT(NVARCHAR(50),dbo.Table5([a.Description Description])) AS [marks]
FROM dbo.Data a
0 голосов
/ 29 апреля 2019

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

insert into dbo.Student

[Roll No], [Name], [Age],[marks])

Select

Convert(nvarchar(50),dbo.Table2([a.Description Description])) as [Roll No],

convert(nvarchar(50),dbo.Table3([a.Description Description])) as [Name],

dbo.Table4([a.Description Description]) as [Age],

convert(nvarchar(50),dbo.Table5([a.Description Description])) as [marks]

from dbo.Data a

Вот пара вопросов:

как вставить данные только в несколько столбцов, оставив другие столбцы пустыми или такими, как они есть вMySQL таблица записей?

Добавление только одного значения в таблицу в sql

0 голосов
/ 29 апреля 2019

Вам просто нужно поставить NULL вместо столбца.

insert into dbo.Student
    [Number], [Timestamp], [Education], [Roll No],
    [Name], [Age],[marks])
Select
    NULL AS [Number], NULL AS [Timestamp],      
    NULL as [Education],    
    Convert(nvarchar(50),dbo.Table2([a.Description Description])) as [Roll No],    
    convert(nvarchar(50),dbo.Table3([a.Description Description])) as [Name],        
    dbo.Table4([a.Description Description]) as [Age],    
    convert(nvarchar(50),dbo.Table5([a.Description Description])) as [marks]
from dbo.Data a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...