|
|
|
| Пытаюсь вставить значения из одной таблицы в другую, код
SELECT
table1.field1,
table1.field2,
table1.field3
FROM
table1
INNER JOIN table2 ON (table1.field1=table2.field1)
AND (table1.field2=table2.field2)
AND (table1.field3=table2.field3)
ничего не получается, ничего не вставляется. Где ошибка?
PS: таблицы по структуре разные, количество полей в них разное и сами поля тоже разные. Просто значения в некоторых из них должны быть одинаковы | |
|
|
|
|
|
|
|
для: zeta777
(15.09.2008 в 17:50)
| | вообще-то строки в таблицу вставляются оператором INSERT,
а меняются - оператором UPDATE. | |
|
|
|
|
|
|
|
для: Trianon
(15.09.2008 в 18:32)
| | То есть нужно
INSERT INTO table2 (field1, field2, field2)
SELECT field1, field2, field2 FROM table1
??? | |
|
|
|
|
|
|
|
для: Trianon
(15.09.2008 в 18:32)
| | А как можно проапдейтить? Не подскажите синтаксис?
UPDATE table2 set table2.field2=(SELECT filed2 from table1 WHERE table2.field1=table1.field1);
работает нормально
А вот если нужно несколько полей проапдейтить - что-то не пойму.
UPDATE table2 set table2.field2=(SELECT filed2 from table1) AND table2.field3=(SELECT filed3 from table1) WHERE table2.field1=table1.field1;
Так? Или я чего-то с кавычками намудрила? Или все неверно? | |
|
|
|
|
|
|
|
для: zeta777
(16.09.2008 в 17:37)
| | >А вот если нужно несколько полей проапдейтить - что-то не пойму.
Тогда нужно сделать апдейт по соединению таблиц. Кстати, для одного поля тоже лучше применять соединение.
UPDATE
table1 JOIN table2 ON table2.field1=table1.field1
SET
table2.field2 = table1.field2,
table2.field3 = table1.field3
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 17:51)
| | извиняюсь за тупизм, но которая таблица в данном случае проапдейтится? table1 или table2? | |
|
|
|
|
|
|
|
для: zeta777
(16.09.2008 в 17:54)
| |
SET
table2.field2 = table1.field2,
table2.field3 = table1.field3
|
если бы были упомянуты обе таблицы - обновились бы поля в обеих. | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 18:00)
| | Спасибо. Надо думать хоть немного, прежде, чем задавать глупые вопросы :) | |
|
|
|
|
|
|
|
для: zeta777
(16.09.2008 в 17:37)
| |
UPDATE table2 AS t2, table1 AS t1
SET
t2.field2 = t1.field2,
t2.field3 = t1.field3
WHERE t2.field1 = t1.field1;
|
| |
|
|
|
|
|
|
|
для: Root
(16.09.2008 в 18:02)
| | Спасибо и за этот вариант. Он вообще-то как-то привычнее.. А какой быстрее сработает? Записей-то мнооого будет... | |
|
|
|
|
|
|
|
для: zeta777
(16.09.2008 в 18:08)
| | Явно оговоренный JOIN ... ON ... как правило оптимизируется лучше. | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 18:13)
| | Спасибо большое. | |
|
|
|
|
|
|
|
для: zeta777
(16.09.2008 в 18:50)
| | . | |
|
|
|