Я пытаюсь обновить некоторые строки в таблице на основе двух других столбцов в другой таблице.В качестве игрушечной модели рассмотрим две таблицы: People со столбцами first_name, last_name и has_license;Драйверы, с колонками first_name и last_name.Теперь я хочу обновить первую таблицу, чтобы has_license = 'Y' для всех кортежей first_name и last_name, которые также есть в таблице драйверов.
Я мог бы сделать:
UPDATE people SET has_license='Y'
WHERE first_name + last_name IN (SELECT first_name + last_name FROM drivers)
(Мой фактический запрос: first_name и last_name - это внешний идентификатор записи и дата, а подзапрос более сложный, включающий предложение join / EXCEPT.)
Это неуклюже, и в зависимости от значений возможны ошибки.В идеале я мог бы просто сделать кортеж в SQL следующим образом:
UPDATE people SET has_license='Y'
WHERE (first_name, last_name) IN (SELECT first_name, last_name FROM drivers)
Но это недопустимый SQL (согласно SQLite).Так возможно ли то, что я хочу?
(Еще одна проблема состоит в том, что ни одна из таблиц не имеет первичных ключей, особенно не одноколоночных. Если бы это было не так, я бы использовал это, чтобы простоопределить строку.)