Для каждой строки таблицы x вставьте правильное значение в таблицу y; каждая таблица будет иметь совпадающие идентификаторы, но таблица x имеет некоторые фиктивные значения имени.
Таблица х
field 1 field 2
--------------------
good name guid 1
good name guid 2
Таблица y
field 1 field 2
-------------------
bad name guid 1
bad name guid 2
Желаемый результат
field 1 field 2
-------------------
good name guid 1
good name guid 2
редактировать: это утверждение, которое, как мне кажется, мне нужно (спасибо Bohemian):
UPDATE parts SET sheetname = (select sheetname from sheets where sheets.sheetid = parts.sheetid)
но я получаю ужасную ошибку «операция должна использовать обновляемый запрос». Типичная причина - отсутствие доступа на запись, который у меня есть (и у меня есть другие запросы на обновление и вставку, которые работают нормально). обе таблицы имеют первичный ключ, который не участвует в запросе. Так что я в растерянности относительно ошибки. Пробовал использовать «distinctrow» тоже безрезультатно.
Кажется, вам нужен оператор UPDATE, а не INSERT. Однако каждая база данных имеет некоторые уникальные части реализации SQL — вам необходимо указать базу данных, которую вы фактически используете. Выберите тег, идентифицирующий эту базу данных.
Пожалуйста, покажите нам, что вы пробовали...
Являются ли значения sheets
уникальными в этой sheetid
таблице?
идентификаторы листов уникальны
Чтобы обновить table_y соответствующим значением в table_x с помощью стандартного SQL:
update table_y set
field1 = (
select field1
from table_x
where table_x.field2 = table_y.field2
)
спасибо, Bohemian, думаю, это поможет!
это работает! Спасибо!
Access считает ваш UPDATE
необновляемым, поскольку он содержит подзапрос.
Поскольку вы сообщили, что значения sheets.sheetid
уникальны, я не понимаю, зачем вам нужен подзапрос. Просто создайте свой UPDATE
на INNER JOIN
между двумя таблицами, например:
UPDATE parts INNER JOIN sheets ON parts.sheetid = sheets.sheetid
SET parts.sheetname = sheets.sheetname
Ваш пример не очень помогает объяснить, чего вы хотите. Хотите обновить значения в y, используя совпадающие значения в x?