#sql #sqlite
Доброго времени суток. Есть такая таблица: word TEXT, par1 INEGER, par2 INEGER, par3 INEGER Нужно установить параметр par3 исходя из первого параметра(par1). Пример: word par1 par2 par3 'someword' 100 0.25 3 'someword1' 200 0.50 2 'someword3' 400 0.25 1 То есть выходит что 3-й параметр это своеобразный рейтинг который будет базироваться на первом параметре. Запись с максимальным значением par1 будет соответствовать значение номер 1, ну и так дальше. В таблице сейчас примерно ~17k записей, и вот нужно как то установить этот третий параметр.
Ответы
Ответ 1
Не знаю, есть ли в Вашей таблице PRIMARY KEY, поэтому я добавил его самостоятельно. Запрос будет таким: drop table if exists Table1; create table Table1 ( id integer primary key, word text, par1 integer, par2 float, par3 integer ); insert into Table1 select 1, 'someword', 100, 0.25, null; insert into Table1 select 2, 'someword1', 200, 0.50, null; insert into Table1 select 3, 'someword3', 400, 0.25, null; insert into Table1 select 4, 'someword4', 300, 0.25, null; drop table if exists temp.TmpTable; create temp table TmpTable ( id integer, word text, par1 integer, par2 float, par3 integer ); insert into temp.TmpTable select id, word, par1, par2, par3 from Table1 order by par1 desc; update Table1 set par3 = (select tmp.ROWID from temp.TmpTable tmp where tmp.id = Table1.id); select * from Table1 order by par3 RecNo id word par1 par2 par3 ----- -- --------- ---- ---- ---- 1 3 someword3 400 0.25 1 2 4 someword4 300 0.25 2 3 2 someword1 200 0.5 3 4 1 someword 100 0.25 4
Комментариев нет:
Отправить комментарий