(My) SQL Итеративно используя данные из одной таблицы, чтобы заполнить другую / выбрать из списков - PullRequest
0 голосов
/ 23 января 2012

У меня есть две (Мои) таблицы SQL A, B. A имеет много столбцов A. (a, b, c, d ...).B содержит только два столбца x, y.Количество строк в B (намного) меньше, чем в A. Все значения в Bx уникальны.

A полностью заполнено.В B существуют только значения в Bx, By пусто, и я хочу заполнить By значениями из (скажем) Ab, соответствующими каждому значению Bx, которое отображается как Aa

Другими словами, что мне нужносделать для каждого Bx найти совпадение в Aa, взять соответствующий Ab и вставить его в By в строке, содержащей значение Bx. Затем я должен повторить это для всех значений в Bx

По причинам, которыенам не нужно вдаваться в подробности, мне нужно сделать это в одном операторе SQL;нет PHP, нет Python и т. д. Нет встраивания.То, что я ищу, - это способ сделать повторный выбор из одного в другое.Я также хочу избежать создания временных таблиц.

FWIW Я не могу делать никаких предположений о количестве строк в каждой таблице.

Надеюсь, что это достаточно ясно.Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

1 голос
/ 23 января 2012

Предполагается, что значения A.a также являются уникальными. Если это не так, вам, возможно, придется поискать способ их группировки.

update B inner join A on B.x=A.a set B.y=A.b;
0 голосов
/ 23 января 2012

Я полагаю, что вы собираетесь нормализовать свою таблицу A, если для каждого значения Aa значение Ab уникально, следующий запрос будет работать

update B
   set B.y =
       (select distinct A.b
          from A
         where A.a = B.x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...