Как проверить значение в столбце и удалить / продолжить чтение (выбрать) в таблице с помощью sql? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть таблица: LoadResults со столбцами: load, incLoad & incKeys

дело 1:

load    incLoad     incKeys
Full    Full          11
Delta   Delta         12
Delta   Delta         13
Delta   Delta         17
Full    Full          19
Full    Full          15
Delta   Delta         16

Столбец incKeys содержит ключи (инкрементные данные) для перемещения. Мы поддерживаем таблицу метаданных: MetaLoad, где мы сохраняем последний перемещенный incKey из предыдущих загрузок каждой таблицы, чтобы мы могли использовать этот ключ (из таблицы: MetaLoad) и получить новые инкрементные ключи из LoadResults таблица по следующему запросу:

select incKeys from schema.LoadResults where incKeys > metaLoadKey

- Я могу получить значение metaLoadKey с помощью кода.

Перед запросом таблицы: LoadResults для добавочных ключей, мне нужно проверить, является ли тип загрузки в одном из столбцов: load, incLoad равен FULL. Если в любом из столбцов значение ПОЛНО, то я должен отбросить чтение таблицы. Если нет, мне нужно прочитать все значения столбца: incKeys (выберите incKeys) дело 2:

load    incLoad     incKeys
Delta   Delta         11
Delta   Delta         12
Delta   Delta         13
Delta   Delta         17
Delta   Delta         19

Если в нем есть только «Delta», мой вывод должен содержать все incKeys.

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

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете просто сделать это, используя вложенные операторы SQL.Этот код будет показывать ваши записи только тогда, когда все значения incLoad и load равны Delta, в противном случае не будет показан ни один результат.

    select incKeys from schema.LoadResults where incKeys > metaLoadKey AND (SELECT COUNT(*) FROM schema.LoadResults where not incLoad='Delta' or not load='Delta')=0;

Вложенный оператор действует как условие и гарантирует, что COUNT записей, не имеющих Delta в качестве incLoad или load, равен нулю.

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