Анонимный пользователь
Дополнительно
SQL обновление из одной таблицы в другую на основе совпадения ID
У меня есть база данных с номерами счетов
и номерами карт
. Я сопоставляю их с файлом, чтобы обновить
все номера карт на номер счета, так что я работаю только с номерами счетов.
Я создал представление, связывающее таблицу с базой данных счетов/карт, чтобы вернуть Идентификатор таблицы
и соответствующий номер счета, и теперь мне нужно обновить те записи, где идентификатор совпадает с номером счета.
Это таблица Sales_Import
, в которой необходимо обновить поле номер счета
:
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
А это таблица RetrieveAccountNumber
, откуда мне нужно произвести обновление:
LeadID AccountNumber
147 7006100100007266957
150 7006100100007267039
Я попробовал нижеприведенные варианты, но пока безуспешно:
UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID =
RetrieveAccountNumber.LeadID)
Он обновляет номера карт на номера счетов, но номера счетов заменяются на NULL
.
879
20
Я считаю, что
UPDATE FROM
сJOIN
поможет:MS SQL
MySQL и MariaDB
Простой способ для копирования содержимого с одного стола на другой, как следовать:
Вы также можете добавить условие, чтобы получить определенные данные скопированы.
Для SQL Server 2008 С + через "слияние", а не обновить проприетарные
... от
синтаксис имеет некоторую привлекательность.А также стандартный SQL и, следовательно, более портативный, он также выдает ошибку, в случае наличия нескольких соединенных строк на стороне источника (и таким образом, возможно несколько разные значения для использования в Update), а не конечный результат будет undeterministic.
К сожалению, выбор не может прийти, однако исключительно предпочитаемый стиль. Реализация
слияние
в SQL-сервер, страдающих от различных жучков. Аарон Бертран был составлен список из сообщенных здесь.Универсального ответа для будущих разработчиков.
<Н1>SQL-сервер</Н1>
<Н1>СУБД Oracle (SQL сервера)</Н1>
<Н1>для MySQL</Н1>
Похоже, вы используете MSSQL, тогда, если я правильно помню, это делается следующим образом:
У меня была такая же проблема на <код>В ФОО.новый</код> установлен в <код>нуль</код> для строки состояния <код>фу</код> что имел найденный ключ в в <код>В баре</код>. Я сделал что-то подобное в Oracle:
в <предварительно> обновление ФОО набор ФОО.новый = (выберите бар.новый из бара где Foo.ключ = бар.ключ) где существует (выберите 1 из бара где Foo.ключ = бар.ключ) </пред>
Для PostgreSQL:
Для MySQL, который прекрасно работает:
Здесь's что работал для меня в SQL сервере:
Спасибо за ответы. Я нашел решение.
Использовать следующие блок запроса на обновление Таблица1 в Таблица2 основе идентификатора:
Это *легкий способ для решения этой проблемы.
В случае, если таблицы находятся в разных БД. (SQL сервер)
обновление в пределах одной и той же таблице:
он работает с PostgreSQL
Ниже в SQL кто-то предложил, не работает в SQL сервере. Этот синтаксис напоминает мне мой старый школьный класс:
Все другие запросы, используя
не в
илинет
не рекомендуются. Нули показывают, потому что ОП сравнивает весь набор данных с небольшого подмножества, то конечно там будут соответствующие проблемы. Это должно быть исправлено путем написания соответствующего SQL с правильным "присоединиться", а не проблема уворачиваясь с помощьюне
. Вы можете столкнуться с другими проблемами с помощьюне в
илинет
в этом случае.Мой голос за одну вершину, которая является обычным способом обновить таблицу на основе другой таблицы путем объединения в SQL сервере. Как я уже сказал, Вы не можете использовать две таблицы в одном "обновить" заявление в SQL Server, если вы присоединитесь к ним в первую очередь.
Мѕ SQL
В Oracle 11g в
Я думал, что это простой пример, может кто-то сделать это легче,
В Oracle 11g в
Это позволит вам получить обновление таблицы на основе значения столбца не нашли в другой таблице.
Это позволит обновить таблицу на основе значений столбцов в обеих таблицах.
попробуйте этот :