Как запустить длинную SQL инструкцию? - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь написать некоторый R-код, который будет извлекать информацию через SQL, проблема в том, что у меня очень длинное выражение Where, потому что я пытаюсь проверить много вещей. В результате я получаю эту ошибку

Ошибка в postgresqlExecStatement (conn, оператор, ...): драйвер RS-DBI: (не удалось получить результат: ОШИБКА: оператор слишком велик. Размер: 159398497 байт. Максимально допустимое: 16777216 байт) Ошибка: C использование стека 159433302 слишком близко к пределу

Есть ли обходной путь для этого

1 Ответ

0 голосов
/ 06 марта 2020

Поскольку WHERE иногда называют неявным объединением в SQL, вы можете превратить длительные условия в таблицу значений и присоединить ее к исходному набору записей.

Оригинал

SELECT t.Col1, t.Col2, t.Col3 
FROM myTable t
WHERE (t.tool = 'r' AND t.backend = 'postgres')
   OR (t.tool = 'python' AND t.backend = 'mysql')
   OR (t.tool = 'julia' AND t.backend = 'sqlite')
   ...

Скорректировано

SELECT t.Col1, t.Col2, t.Col3 
FROM myTable t
INNER JOIN myConditions c
   ON t.tool = c.tool
   AND t.backend = c.backend

myConditions

| tool   | backend  |
|--------|----------|
| r      | postgres |
| python | mysql    |
| julia  | sqlite   |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...