SQL-запрос sqlite для необработанных строк - PullRequest
1 голос
/ 16 августа 2010

Я даже не совсем уверен, где / что искать - поэтому извиняюсь, если это тривиальная вещь, о которой спрашивали раньше!

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

table_A = [id, value1, value2]
table_A$foo = [id, foo(value1), foo(value2)]
table_A$bar = [id, bar(value1), bar(value2)]

Где foo () / bar () - произвольные функции, которые здесь не актуальны

Сейчас я делаю:

select * from table_A

И используйте этот курсор для вычисления всех строк для каждой из производных таблиц. Если что-то пойдет не так (или я добавлю новые строки в table_A), я хотел бы иметь возможность вычислить (в SQL, а не в python), какие строки уже присутствуют в table_A$foo и т. Д., И поэтому просто выберите оставшиеся (как и AND NOT) для вычисления foo() и bar() - я должен быть в состоянии сделать это на col ID, так как они остаются теми же.

Интересно, есть ли способ сделать это в sqlite, который, я думаю, был бы быстрее, чем пытаться настроить это на python.

Большое спасибо!

1 Ответ

1 голос
/ 16 августа 2010

Я не понимаю, рассматриваете ли вы совпадение, основанное на сопоставлении столбцов value1 или комбинации всех трех столбцов ...

Использование EXISTS для поиска уже существующих:

SELECT *
  FROM TABLE_A a
 WHERE EXISTS(SELECT NULL
                FROM TABLE_A$foo f
               WHERE a.id = f.id
                 AND a.value1 = f.value1
                 AND a.value2 = f.value2)

Использование EXISTS для поиска тех, которые отсутствуют :

SELECT *
  FROM TABLE_A a
 WHERE NOT EXISTS(SELECT NULL
                    FROM TABLE_A$foo f
                   WHERE a.id = f.id
                     AND a.value1 = f.value1
                     AND a.value2 = f.value2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...