2013-04-07 7 views
0

В SQL Server 2012 я пытаюсь установить значения моего столбца «TradeDate» равным значениям моего столбца «MARKET_DAY». Вот мой текущий код:Ошибка SQL Server на основе другой таблицы?

USE Sales 
GO 
update dbo.try1 
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY 
FROM dbo.try1, dbo.yesterday 

Однако, когда я запускаю это, я получаю:

(0 row(s) affected) 

, и я не знаю, почему. Любая помощь приветствуется. (Я ноб в T-SQL, будьте осторожны, пожалуйста.)

+0

Что такое условие? Сколько строк у вас в 'dbo.try1' и сколько их в' dbo.yesterday'? Не могли бы вы привести нам пример того, как вы хотите обновлять данные в 'dbo.try1' с' dbo.yesterday' – outcoldman

+0

'dbo.try1' не имеет данных в столбце' TradeDate'. Я пытаюсь скопировать данные из колонки 'dbo.yesterday'' MARKET_DAY' в столбец 'TradeDate'' dbo.try1'. Это может быть плохой дизайн db, но это необходимо для задачи. – user1067257

ответ

3

Вы пытаетесь вставить данные из «вчера» таблицы в «try1»?

INSERT INTO try1(TradeDate) 
SELECT MARKET_DAY FROM yesterday 
--You can mention your condition, if anything specific here. 
+0

У нас есть победитель! Работает отлично. Из любопытства вы знаете, почему синтаксис 'UPDATE' не работал? – user1067257

+1

UPDATE используется для «обновления» существующих строк. Ex: Если у вас были данные TradeDate X, и вы хотели обновить его значение, используя значение «вчера» Y, тогда вы могли бы использовать UPDATE SET tradedate = marketday, где tradedate = X и marketday = Y – Vishy

+0

Теперь я знаю. Имеет смысл. Спасибо! – user1067257

2

Что будет делать ваш запрос выше, он обновит значение столбца каждой строки с таким же результатом. Я думаю, вы хотите, чтобы он обновил соответствующее значение MARKET_DAY для соответствующего столбца TradeDate. В этом случае вам нужно использовать JOIN оператора с общей column

USE Sales 
GO 
update dbo.try1 
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY 
FROM dbo.try1 INNER JOIN dbo.yesterday 
ON dbo.try1.columnName=dbo.yesterday.columnName 
+0

Все еще получается '(0 строк затронуты)' даже с синтаксисом соединения ... – user1067257

+0

, на каком столбце вы указали 'Inner join'? – Sachin

+0

Я думаю, что ваш вопрос был связан с обновлением колонки. если это было в случае вставки, чем вы не указали в своем вопросе? – Sachin

1

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

примитивов, которые вы пытаетесь обновить должно быть что-то общее, иначе обновление выиграл» t правильно работать!

вот пример:

dbo.try1:

enter image description here

dbo.yesterday:

enter image description here

и вот запрос:

USE DBTest 
GO 
update dbo.try1 
SET dbo.try1.TradeDate = dbo.yesterday.MARKET_DAY 
FROM dbo.try1 INNER JOIN dbo.yesterday 
ON dbo.try1.id=dbo.yesterday.id 

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

вот результат выполнения запроса выше:

enter image description here

+0

он хочет, чтобы мы работали на это –

Смежные вопросы