Изменение значений таблицы при выполнении запроса SQL - PullRequest
2 голосов
/ 18 апреля 2020

Я хотел бы изменить значения столбца таблицы только для оператора SQL.

Допустим, у меня есть таблица со столбцами Имя, Баллы и Страна. Я хотел бы изменить имена с любого значения, которое может быть, на 1, 2, 3, ... (например, Питер = 1, Майк = 2, Лиза = 3). Запрос должен автоматически присваивать значения именам, поскольку я не знаю, сколько имен для каждой страны.

Я провел небольшое исследование и нашел только это CASE-решение. Однако я хотел бы изменить все значения этого столбца при выполнении запроса SQL без добавления каждого имени в оператор CASE.

SELECT Name, Points, Country
  CASE Name
    WHEN "Peter" THEN "1"
    ELSE Name
  END,
FROM ...

Примечание: имена уникальны

Ответы [ 2 ]

1 голос
/ 18 апреля 2020
SELECT Points, Country,
 Case when Name REGEXP '[a-zA-Z]' then  ROW_NUMBER() OVER ()
 ELSE name
 END AS Name
FROM table;
1 голос
/ 18 апреля 2020

Хммм. , , Если вам все равно, какие номера присвоены какому имени, вы можете использовать dense_rank():

select Name, Points, Country,
       dense_rank() over (order by Name) as name_int
from . . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...