2013-12-19 1 views
0

Я и ужасно с базами данных и sql, но знаю основы, и это немного выходит за рамки, которые я считаю. Мне нужен способ обновить все значения строк, где строка выбрана номером строки, потому что у меня нет гарантии значения, относящегося к любому из столбцов в этой строке.Обновить значение каждого столбца, относящееся к определенному номеру строки? sqlite sqlite3

Пример таблицы БД:

Col1 Col2 Col3 
a  b  c 
d  e  f 
g  h  i 

Так что я нужен способ для скажем

Update exampleTableName 
Set Col1 = 'j', Col2 = 'k', Col3 = 'l' 
Where rowNumber = 2 

Я пишу это в C++ и использование sqlite3, но только запрос должен сделать для меня.

Благодаря

Edit:

Я знаю, это звучит смешно, и многие спрашивают, почему таблица настроена таким образом, но я не в состоянии контролировать это. Все, что я могу сказать, это то, что я могу выяснить номер строки и обновить каждое значение столбца в соответствии с тем, что хранится в другой переменной. Обычно эти переменные будут содержать значение, которое я хочу найти, но оно никогда не гарантируется. Поэтому я могу только вспомнить строку, которую они хотят, и сохранить ее во время поиска, а затем обновить (последнюю выбранную строку), отслеживая ее индекс и обновляя его значения в соответствии с w/e в тех переменных, которые могли бы быть одинаковым или может измениться.

ответ

3

По умолчанию каждая строка в SQLite имеет специальный столбец, обычно называемый «rowid», который однозначно идентифицирует эту строку в таблице. Вы можете использовать это, чтобы выбрать свою строку.

Однако, если в конце инструкции CREATE TABLE добавлена ​​фраза «БЕЗ ROWID», то специальный столбец «rowid» опущен. Иногда преимущество пространства и производительности сводится к тому, чтобы исключить rowid.

Update exampleTableName Set Col1 = 'j', Col2 = 'k', Col3 = 'l' Where rowid= 2 
+0

Большое вам спасибо! Намного легче, чем я думал! Если бы я мог, стрелял бы вверх. – Birdbuster

+0

добро пожаловать! –

0

Ваша таблица нуждается в некоторой форме первичного ключа ... как минимум вы должны добавить столбец с именем Key INT IDENTITY (1,1), это даст каждой строке номер.

+0

, например, ваша таблица: CREATE TABLE TableName (Key IDENTITY INT (1,1) Col1 VARCHAR (5) Col2 VARCHAR (5)) и так далее ... –

+0

О.И. знаю, что таблица отформатирована ужасно , Я не могу контролировать это, но я отвечаю за то, что написал что-то, что обновит все значения строк в соответствии с тем, что хранится в некоторых переменных. У меня есть способ узнать, какая строка в таблице должна быть отредактирована, но не имеет способа узнать, какая строка по значению, потому что они могли бы изменить их между вызовом строки и обновлением. Поэтому я знаю только номер строки:/ – Birdbuster

+0

не может добавить уникальный ключ ... ну тогда вы должны уметь идентифицировать уникальную строку каким-то образом, если вам нужно сделать WHERE col1 = 'val1' AND col2 = 'val2 'и т. д. вы должны каким-то образом идентифицировать уникальную строку, иначе вы можете обновить более 1 строки ... –

Смежные вопросы