Помогите составить правильно SQL запрос

ItCry

Путник
Пользователь
Сообщения
15
Розыгрыши
0
Репутация
0
Реакции
3
Баллы
0
Продублирую тут еще..)
Всем привет. Нужна помощь тех, кто знает SQL =)
В общем есть 2 таблицы. Таблица table1 и table2. Структура у них одинаковая. Т.е. есть куча разных столбцов, таких как ID, icon и т.д..
В этих таблицах разные значения в столбце icon.
Необходимо выполнить запрос в таблицу table2. Обновить значения icon у тех ID, у которых в table1 в столбце icon встречается (icon1.). Проблема только в том, что все эти значения в таблице icon разные, т.е. для обновления в table2 эти значения необходимо брать из table1 и сопоставлять с ID в table2. Не знаю, правильно ли я объяснил))

Пытался что-то сделать сам, но помоему какую-то чушь написал..

PHP:
UPDATE table2 t2 SET t2.icon = (SELECT t1.icon FROM table1 t1 WHERE t1.id = t2.id)
WHERE id IN (
  SELECT id FROM table1 WHERE icon LIKE '%icon1.%'
);

В конечном итоге ошибка 1242 - Subquery returns more than 1 row

знаю, что где-то на****лся. Но sql знаю поверхностно..
Может кто-то подскажет?
 

Может что-то вроде этого?
INSERT INTO table1 SELECT * FROM table2
 
Может что-то вроде этого?
INSERT INTO table1 SELECT * FROM table2
нет, в том-то и дело, что инсерт не подойдет.
строки с такими ID существуют уже как в первой, так и во второй таблице...
Нужно именно обновить значения во второй таблице, взяв эти значения из первой таблицы
 
Я тоже особо не силен в sql.
Но попробуй вот так.
UPDATE table1 SET table1.icon = table2.icon FROM table2 WHERE table1.id = table2.id;
 
хоть бы структуру дал.
 
да зачем эта структура то?))
В общем можно закрывать. Если вдруг кому понадобится, то мне помог вот такой запрос, правда у меня 60к записей и выполнялся он минут 30, но все же результат оправдал себя)
PHP:
UPDATE table1, table2
SET table1.icon = table2.icon
WHERE table1.id = table2.id
AND table2 LIKE '%icon1.%';
 
Яб запилил на яве быстрее :D
 
да зачем эта структура то?))
В общем можно закрывать. Если вдруг кому понадобится, то мне помог вот такой запрос, правда у меня 60к записей и выполнялся он минут 30, но все же результат оправдал себя)
PHP:
UPDATE table1, table2
SET table1.icon = table2.icon
WHERE table1.id = table2.id
AND table2 LIKE '%icon1.%';
я тебе это и написал... facepalm
 
я тебе это и написал... facepalm
Во первых, то что написал ты - выдает ошибку синтаксиса. Во вторых сам запрос не удовлетворяет условиям, но это не проблема. Условия я дописал, но MySql все равно ругался на FROM .
 
Во первых, то что написал ты - выдает ошибку синтаксиса. Во вторых сам запрос не удовлетворяет условиям, но это не проблема. Условия я дописал, но MySql все равно ругался на FROM .
Во первых, я за тебя нашел решение. Во вторых, ты отталкивался от него.
Добавить строчку не проблема, я писал что не мастер sql. Твой запрос в первом посте вообще бред.
Ну да ладно)
 
Во первых, я за тебя нашел решение. Во вторых, ты отталкивался от него.
Добавить строчку не проблема, я писал что не мастер sql. Твой запрос в первом посте вообще бред.
Ну да ладно)
Короче спасибо за помощь)
 
Назад
Сверху Снизу