У меня есть две таблицы MySQL, вот как они структурированы:
table foo(
foo_id varchar(32),
field1 varchar(32),
field2 varchar(32),
bar_id varchar(32)
);
table bar(
bar_id varchar(32),
field1 varchar(32),
field2 varchar(32)
);
Я хотел бы обновить таблицу foo
, чтобы иметь те же значения для field1
и field2
, что и таблица bar
. Я пробовал следующие два запроса, оба из которых выполняются без ошибок, но не получают мне результаты, которые я хочу:
UPDATE foo LEFT JOIN bar ON foo.bar_id = bar.bar_id
SET foo.field1 = bar.field1 AND foo.field2 = bar.field2;
и
UPDATE foo,bar SET foo.field1 = bar.field1
AND foo.field2 = bar.field2 WHERE foo.bar_id = bar.bar_id
но не работают. что мне здесь не хватает?
Я думаю, может быть, у вас проблемы с AND
; вместо этого должна быть запятая. Таким образом, я думаю, что вы обновляете foo.field1
, чтобы стать (bar.field1 AND foo.field2 = bar.field2)
(логическая связь между не-нулесообразностью bar.field1
и равенством field2
-s), и я почти уверен, что не то, что вы имели в виду. Не тестировал; может быть неправильным.
=
работает как для назначения, так и для сравнения в SQL, так что ... нет, ошибок нет. :)
select foo.*, bar.* from foo LEFT JOIN bar ON foo.bar_id = bar.bar_id SET foo.field1 = bar.field1 AND foo.field2 = bar.field2;