2016-04-02 5 views
3

У меня есть строковые данные, которые имеют значения, которые выглядят как 'Washington, DC', где City, State хранится в атрибуте table, называемом place_city_state.Как разбить строку на два новых атрибута

Я пытаюсь разделить этот атрибут в двух других называемых venue_city и venue_state, но когда я

UPDATE all_event_details 
SET venue_city = i.venue_city, venue_state = i.venue_state 
FROM (SELECT split_part(venue_city_state, ',', 1) AS venue_city, 
    split_part(venue_city_state, ',', 2) AS venue_state 
    FROM all_event_details) i; 

я получаю только первое значение Вашингтона в месте проведения города, и DC в состоянии места для проведения ВСЕ моих строк в таблице. Не значение в place_city_state для этой конкретной строки.

Как изменить это обновление, чтобы получить venue_city и venue_state из venue_city_state для каждого строки, а не только первый строки в таблице?

Любая помощь ценится! Благодаря

ответ

1

Нет необходимости в суб-выбора:

UPDATE all_event_details 
    SET venue_city = split_part(venue_city_state, ',', 1), 
     venue_state = split_part(venue_city_state, ',', 2) 
0

Уже есть ответ a_horse_with_no_name, что это лучше, но вы можете достичь своей цели с ваш запрос добавления ИНЕКЕ, чтобы соответствовать каждой строки из all_event_details с его соответствующим в вторичный выбор.

UPDATE all_event_details 
SET venue_city = i.venue_city, venue_state = i.venue_state 
FROM (SELECT id, 
       split_part(venue_city_state, ',', 1) AS venue_city, 
       split_part(venue_city_state, ',', 2) AS venue_state 
     FROM all_event_details) i 
WHERE id = i.id; 

Я предполагаю, что id является all_event_details ключ.