Sqlite3. Необходимо получить первое вхождение значения при определенном условии. - PullRequest
0 голосов
/ 26 мая 2020

У меня есть база данных sqlite вида:

    c.execute('''
        CREATE TABLE IF NOT EXISTS order_info (
            id                  INTEGER PRIMARY KEY,
            name                TEXT NOT NULL,
            surname             TEXT NOT NULL,
            email               TEXT NOT NULL,
            date                TEXT NOT NULL,
            time                TEXT NOT NULL,
            phone               TEXT NOT NULL,
            contact             TEXT NOT NULL,
            idd                 TEXT NOT NULL,
            doc                 TEXT NOT NULL,
            problem             TEXT NOT NULL,
            status              TEXT,
            is_send             INT NOT NULL DEFAULT 0 
        )
    ''')

Задача: Мне нужно изменить поле «статус» заказа, где условие: (do c = doc_id) и значение NULL в поле 'status' встречается впервые с самого начала

    c.execute('UPDATE order_info SET status = ? WHERE doc = ? (#condition#)', (status, doc_id)

# condition # - здесь мне нужно создать условия для нахождения первое вхождение NULL в строку состояния, где значение равно do c = doc_id

Пример: doc_id = 3; поле статуса должно измениться только на 6-м id

изображение базы данных: введите описание изображения здесь

1 Ответ

0 голосов
/ 26 мая 2020

Вы хотите обновить строку, указав id равным минимуму id, где doc = ? и статус null:

UPDATE order_info 
SET status = ? 
WHERE id = (SELECT MIN(id) FROM order_info WHERE doc = ? AND status IS NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...