2014-09-07 2 views
0

Это должно быть очень просто, но я не могу понять, как это сделать. Я хотел бы изменить значения двух разных столбцов. Один от 1 до общего числа строк, а другой - от общего числа строк до одного (в основном увеличивающегося и уменьшающегося числа). Я пробовал:колонка обновления с номерами в таблице sqlite

start = 0 
end = number_of_rows + 1 
c.execute('SELECT * FROM tablename') 
newresult=c.fetchall() 

for row in newresult: 

    start += 1 
    end -= 1 

    t = (start,) 
    u = (end,)  

    c.execute("UPDATE tablename SET Z_PK = ?", t) ---> this will transform all rows with Z_PK since there is no where statement to limit 
    c.execute("UPDATE tablename SET Z_OPT = ?", u) 

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

+0

Есть ли какая-либо колонка INTEGER PRIMARY KEY? Это таблица БЕЗ ROWID? Есть ли ограничение на эти два столбца? –

+0

Нет ограничений. Проблема в том, что существует целочисленный первичный ключ, и на самом деле это тот, который я хочу увеличить (Z_PK). Проблема заключалась в том, что я объединять две базы данных, а некоторые Z_PK имеют одинаковое число. Я хотел бы затем перебрать таблицу и обновить новые номера. – Trichophyton

+0

Итак, вы объединили две таблицы в новую таблицу без ограничения первичного ключа? –

ответ

0

Без колонки INTEGER PRIMARY KEY у вашей таблицы есть , которая уже содержит значения:

UPDATE MyTable 
SET Z_PK = rowid, 
    Z_OPT = (SELECT COUNT(*) FROM MyTable) + 1 - rowid 
Смежные вопросы