Выберите Inner join и обновите в одном запросе. - PullRequest
0 голосов
/ 14 января 2019

Я хочу найти рейтинг, а затем обновить его столбец рейтинга в соответствии с их идентификатором.

Мои данные следующие (Таблица Элемент ).

MEMBER_ID | LOAN_AMOUNT | Rank 
1         | 2,000.00    |  0
2         | 1,000.00    |  0
3         | 4,000.00    |  0
4         | 1,000.00    |  0

Теперь я хочу найти их рейтинг и обновить столбец рейтинга в соответствии с ним. Мой общий запрос выглядит примерно так:

UPDATE
Member AS dest,
(
    SELECT RANK() OVER(ORDER BY t.loan_amount DESC) as [rank],
     t.memeber_id,t.loan_amount
FROM Member
) AS src
SET
dest.rank = src.rank
INNER JOIN dest.memeber_id = src.memeber_id

Есть ли более быстрый способ обновить мою таблицу?

1 Ответ

0 голосов
/ 14 января 2019

В mysql синтаксис соединения обновления должен быть

UPDATE
Member AS dest
INNER JOIN 
(
    SELECT RANK() OVER(ORDER BY t.loan_amount DESC) as [rank],
     t.memeber_id,t.loan_amount
FROM Member
) src ON dest.memeber_id = src.memeber_id
SET dest.rank = src.rank

В любом случае, вам следует избегать хранения данных, которые легко рассчитываются на лету. В то же время, когда вы выполняете выборку, вы можете легко получить также ранг ()

...