- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем доброго времени суток, вот понадобилось разбить базу, помогите составить MYSQL запрос, нужно из одной таблицы скопировать ID в другую таблицу при условии совпадения поля NAME.
Пример таблицы в которой только уникальные имена
и вторая таблица где имена могут повторятся и real_id там пустое:
собственно нужно одним запросом записать нужные ID абонентов из таблицы abonent_table в поля real_id в access_table имея имя абонента (поле name).
Заранее спасибо, думаю многим будет полезно занть)
---------- Добавлено 20.02.2013 в 07:28 ----------
Делаю так:
и так
Но так как записей больше 2 лямов, то это дело все виснит, а если добавить в первом варианте LIMIT 100 например то выскакивает ошибка. Походу что-то не так делаю? Может есть более гуманный способ?
Попробуйте так
Попробуйте так
в таком случае выдает Unknown column `access_table` in 'where clause'
а если сделать UPDATE `abonent_table`,`access_table` SET `access_table`.`real_id` = `abonent_table`.`id` WHERE `access_table`.`name`=`abonent_table`.`name`
то оно долго думает и я даже не могу сказать результат, запускаю запросы через SSH
Мож както LIMIT можно привязать и заодно проверку AND `access_table`.`real_id`='0' LIMIT 500000 ? прост если в тупую дописать там какаято ошибка "ERROR 1221 (HY000): Incorrect usage of UPDATE and LIMIT"
Буду пока пробывать дописать AND `access_table`.`real_id`='0' AND `access_table`.`real_id`<'50' но хз прокатит ли такое, запустил что-то долго тупит(((
UPDATE access_table ac LEFT JOIN abonent_table ab ON ab.name=ac.name SET ac.real_id=ab.id
UPDATE access_table ac, abonent_table ab SET ac.real_id=ab.id WHERE ac.name=ab.name LIMIT 100
на поля ac.name и ab.name должны стоять индексы. Ну если записей много то ждите, мгновенно такой запрос конечно не выполнится.
UPDATE access_table ac LEFT JOIN abonent_table ab ON ab.name=ac.name SET ac.real_id=ab.id
UPDATE access_table ac, abonent_table ab SET ac.real_id=ab.id WHERE ac.name=ab.name LIMIT 100
на поля ac.name и ab.name должны стоять индексы. Ну если записей много то ждите, мгновенно такой запрос конечно не выполнится.
Спасибо, думаю протестю на днях ибо на текущем хосте это все унриал, виснит весь серв даже когда индекс пытаюсь вставить(
UPDATE access_table ac LEFT JOIN abonent_table ab ON ab.name=ac.name SET ac.real_id=ab.id
UPDATE access_table ac, abonent_table ab SET ac.real_id=ab.id WHERE ac.name=ab.name LIMIT 100
на поля ac.name и ab.name должны стоять индексы. Ну если записей много то ждите, мгновенно такой запрос конечно не выполнится.
Первый вариант выдает ошибку что-то типа use near ляляля, а во втором варианте LIMIT не работает, ну а без LIMIT сложновато за раз все обработать(((
Первый вариант выдает ошибку что-то типа use near ляляля
Значит поправьте где выдает ошибку, возможно я где-то ошибся в названия полей.
а во втором варианте LIMIT не работает, ну а без LIMIT сложновато за раз все обработать(
Еще раз повторяю - на поля ac.name и ab.name должны стоять индексы.
Значит поправьте где выдает ошибку, возможно я где-то ошибся в названия полей.
Еще раз повторяю - на поля ac.name и ab.name должны стоять индексы.
Индексы стоят на все поля и названия все правильно написаны, всеравно выдает ошибку что неправильный синтаксис. Кстате, если ON это условие, то WHERE потом тоже можно использовать или? Пытался то что в WHERE запихнуть в ON - всеравно ошибка синтаксиса вылазит(
Ошибку в студию.
Ошибку в студию.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'abonent_table ab ON ab.name=ac.name SET ac.id=ab.id WHERE ac.id>0 AND ac.id<' at line 1
P.S запускал через phpMyAdmin
Точно не ac.real_id?
ac.id>0 AND ac.id<
P.S запускал через phpMyAdmin
Запускайте из ssh