* Обновлен осветленные вопрос и примерSQL обновления данных уложены, как связанный список
У меня есть таблица, которая данные представлены в виде связанного списка
т.е.
ID | FROM_STATE | TO_STATE | SOME_OTHER_COLUMN
Мне нужно изменить «указатели» вокруг, чтобы удалить состояние BAR. Как вы видите ниже, foo переходит в bar и bar переходит в com и т. Д. Я хочу, чтобы foo перешел непосредственно в com и от QUAX до FIZZ. Кроме того, значение из «SOME_OTHER_COLUMN» должно быть выбрано из удаляемой записи и использоваться вместо значения для «SOME_OTHER_COLUMN» в обновляемой записи.
ОТ
ID|FROM_STATE|TO_STATE|SOME_OTHER_COLUMN
1| FOO | BAR | xxx
1| BAR | COM | zzz
2| QUAZ | BAR | aaa
2| BAR | FIZZ | bbb
TO:
ID|FROM_STATE|TO_STATE|SOME_OTHER_COLUMN
1| FOO | COM | zzz
2| QUAX | FIZZ | bbb
Я начал писать автообъединение и пытается что-то вроде:
update
FOO a
join FOO b
on a.ID = b.ID
and a.FROM_STATE = b.FROM_STATE
set a.TO_STATE = b.TO_STATE
where b.FROM_STATE='BAR'
and a.TO_STATE='BAR';
Это не сработало, строки не были изменены ,
Я установил таблицу в приведенном ниже SQLFilldle. Любая помощь приветствуется. DB оракул (не версия)
http://sqlfiddle.com/#!2/7e8d08/1
На основании Вашего описания результата: '1 | FOO | БАР | xxx' должен быть фактически '1 | FOO | COM | xxx' ??? – AaronLS
Все идентификаторы равны 1, а a.FROM_STAGE может быть a.FROM_STATE? – agentpx
@AaronLS, да, это была опечатка. Спасибо за уловку – AfterWorkGuinness