2015-09-01 3 views
0

У меня есть две таблицы: Jobs:своп две колонки между двумя таблицами

JobId ApiId1 JobType 
1  3  1 
2  4  3 
3  6  3 

И TypeThreeJobs, для данных типа конкретных

JobId ApiId2 
2  5 
3  7 

В случае необходимости, мне нужно поменять местами значения в Api2 и Api3

JobId ApiId1 JobType | ApiId2 
1  3  1  | 
2  5  3  | 4 
3  7  3  | 6 

Что является самым эффективный способ сделать это? У меня есть ответ ниже, но было интересно, была ли более эффективная версия (например, нет необходимости в переменных таблицы).

+0

Я не думаю, что так - вы можете редактировать только стоит один таблицы данных в то время, во время представления. https://msdn.microsoft.com/en-us/library/ms187956%28v=sql.110%29.aspx – Arithmomaniac

ответ

0

Мой рабочий раствор использовать табличную переменную:

INSERT INTO @SwapValues 
SELECT Jobs.JobId, ApiId1, ApiId2 
FROM Jobs INNER JOIN TypeThreeJobs 
ON Jobs.JobId = TypeThreeJobs.JobId 

UPDATE Jobs 
Set ApiId1 = SV.ApiId2 
FROM @SwapValues SV INNER JOIN Jobs 
ON Jobs.JobId = SV.JobId 

UPDATE TypeThreeJobs 
Set ApiId2 = SV.ApiId1 
FROM @SwapValues SV INNER JOIN Jobs 
ON Jobs.JobId = SV.JobId 
Смежные вопросы