sqlite3: мой sql запрос запускается в бесконечный цикл - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть следующая таблица:

id как int, prop как текст, timestamp как int, json как blob

Я хочу найти все пары, которые имеют одинаковую подпорку и одну и ту же метку времени. Позже я хочу расширить временную отметку, например, до +/- 5 se c.

Я пытаюсь сделать это с помощью INNER JOIN, но мой запрос сталкивается с бесконечным l oop:

SELECT * FROM myTable c 
INNER JOIN myTable c1 
     ON c.id != c1.id 
     AND c.prop = c1.prop 
     AND c.timestamp = c1.timestamp

Может быть, мой подход неверен. В чем проблема с моим запросом? Как мне это сделать? На самом деле мне нужны группы с этими парами.

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете попытаться определить, будет ли запрос быстрее с GROUP BY:

SELECT * FROM myTable
WHERE (prop, timestamp) IN (
    SELECT prop, timestamp
    FROM myTable
    GROUP BY prop, timestamp
    HAVING COUNT(*) > 1
)

Хотя это трудно сказать без примеров данных.

Если таблица огромна, вы можете иметь создать индекс для ускорения запроса.

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