Удалить строки с внутренним соединением? - PullRequest
15 голосов
/ 03 декабря 2011

У меня есть база данных SQLITE с двумя таблицами. Таблица A имеет целочисленную временную метку и другой целочисленный столбец, содержащий идентификатор строки, ссылающийся на строку в таблице B, которая имеет две временные метки.

Я хочу удалить все строки в таблице A, где их временная метка не лежит между двумя временными метками в таблице B, а ROWID равен X.

Вот что у меня сейчас, но я получаю синтаксическую ошибку:

DELETE FROM network
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
        AND network.trackId = X

1 Ответ

17 голосов
/ 03 декабря 2011

У вас нет закрывающей скобки для вашего подвыбора. Попробуйте это:

DELETE FROM network
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
       AND network.trackId = X
)

Если это не сработает, попробуйте опубликовать фактическую синтаксическую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...