Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена значений в столбце таблицы / 6 сообщений из 6, страница 1 из 1
31.07.2018, 14:13
    #39681570
Russ86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Здравствуйте,

Подскажите, возможно ли составить запрос для данного случая:
Имеется таблица (~600 000 строк). В ней нужно у одного столбца заменить значения с 500 000 по 600 000 строки на значения из csv/txt файла.

Предполагаю, что можно использовать LOAD DATA INFILE, но точно необходимый запрос не получается составить.
...
Рейтинг: 0 / 0
31.07.2018, 14:49
    #39681597
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Russ86Предполагаю, что можно использовать LOAD DATA INFILEАга, это первый шаг.

Russ86но точно необходимый запрос не получается составить.Покажите, как пытались составить.
...
Рейтинг: 0 / 0
31.07.2018, 14:53
    #39681599
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Russ86Предполагаю, что можно использовать LOAD DATA INFILEДа, во временную таблицу. Это будет запрос номер один.

Russ86заменить значения с 500 000 по 600 000 строкиЭто будет второй запрос. Но сначала надо будет точно определить, чем задаётся порядок, по какому признаку, при какой сортировке, будут отсчитываться номера строк.
...
Рейтинг: 0 / 0
01.08.2018, 11:19
    #39681901
Russ86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Спасибо за ответы.

AkinaДа, во временную таблицу. Это будет запрос номер один.
Данный шаг сделал, создал временную таблицу.

AkinaНо сначала надо будет точно определить, чем задаётся порядок, по какому признаку, при какой сортировке, будут отсчитываться номера строк.
Пробовал добавить во временную таблицу дополнительный столбец product_id, значения которого бы совпадали со столбцом product_id, который есть в первой таблице. И выполнить запрос с заменой по условию:

UPDATE TableB
SET TableB.column = (
SELECT TableA.column
FROM TableA
WHERE product_id = product_id
);

Но это привело к ошибке:
#1242 - Subquery returns more than 1 row
...
Рейтинг: 0 / 0
01.08.2018, 12:14
    #39681935
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Russ86WHERE product_id = product_idвсегда даст True. Надо указать алиасы таблиц (и вообще возьмите за правило - если более одной таблицы - указывать алиас для КАЖДОГО поля):

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE TableB
SET TableB.column = (
SELECT TableA.column 
FROM TableA
WHERE TableA.product_id = TableB.product_id
);


При этом предполагается, что TableA.product_id - уникальное.

Хотя в MySQL надо быть проще:

Код: sql
1.
2.
3.
UPDATE TableA, TableB
SET TableB.column = TableA.column 
WHERE TableA.product_id = TableB.product_id
...
Рейтинг: 0 / 0
01.08.2018, 13:21
    #39681995
Russ86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена значений в столбце таблицы
Код: html
1.
2.
3.
4.
5.
6.
UPDATE TableB
SET TableB.column = (
SELECT TableA.column 
FROM TableA
WHERE TableA.product_id = TableB.product_id
);


В данном варианте, где product_id совпадали, значения заменялись. А где не было соответствующих product_id значения просто стерлись.

Код: html
1.
2.
3.
UPDATE TableA, TableB
SET TableB.column = TableA.column 
WHERE TableA.product_id = TableB.product_id


Данный запрос сработал как надо, спасибо. Там где product_id совпали, значения заменились, а остальные остались нетронутыми.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена значений в столбце таблицы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]