MySQL - обновить братьев и сестер с тем же ключом - PullRequest
1 голос
/ 09 октября 2011

Пока не могу найти решение ... хотя, возможно, это вопрос новичка, я не смог его преодолеть ... надеюсь, кто-то может помочь.

У меня есть таблица MySQL, которая имеет:

Blockquote

     Col1  Col2
Row1 A     null
Row2 A     A1
Row3 A     null
Row4 B     null
Row5 B     B1
etc

> Blockquote

Как создать обновление SQL для обновления Col2, чтобы значения в Col2 заменяли нуль, т. Е. C2R1 и C2R3 получают A1, а C2R4 получает B1?

Ответы [ 2 ]

1 голос
/ 09 октября 2011

Вы можете рассчитать необходимые значения следующим образом:

CREATE TEMPORARY TABLE yourtemptable AS
SELECT yourtable.col1, T1.col2
FROM yourtable
JOIN
(
    SELECT col1, MAX(col2) AS col2
    FROM yourtable
    GROUP BY col1
) T1
ON yourtable.col1 = T1.col1

Затем вы можете либо удалить / усечь исходную таблицу и воссоздать ее, используя эти значения, либо, если вы не можете удалить таблицу, вместо этого вы можете выполнить многотабличное обновление .

0 голосов
/ 09 октября 2011

Хотя это может не работать (поскольку в документации MySQL указано, что В настоящее время вы не можете обновить таблицу и выбрать из этой же таблицы в подзапросе. ), вам следует попробовать что-то вроде:

UPDATE table1 SET col2 = (SELECT t2.col1 FROM table1 t2 WHERE t2.col1 = table1.col1 AND NOT t2.col2 IS NULL LIMIT 1) WHERE table1.col2 IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...