случай, когда предложение в sql запросе в db2 - PullRequest
0 голосов
/ 05 марта 2020

У меня есть база данных db2 / AS400, и я пытаюсь выполнить следующий запрос:

SELECT *
FROM user
WHERE id IN (
    CASE 
     WHEN 1=1 THEN
        (SELECT id
        FROM user AS userInner
        WHERE userInner.salary < 10)
     ELSE
        (SELECT id
        FROM user AS userInner
        WHERE userInner.salary > 20)
    END
)

Условие 1 = 1 зависит от чего-то другого, но в этом простом примере это нормально. Однако в качестве ошибки я получаю следующее:

SQL Ошибка [21000]: [SQL0811] Результат SELECT для нескольких строк.

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

Спасибо

1 Ответ

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

Не думаю, что вам нужно CASE. Вы можете сделать это следующим образом:

SELECT *
FROM user
WHERE id IN (
  SELECT id FROM user
  WHERE (1=1 AND userInner.salary < 10)
     OR (1<>1 AND userInner.salary > 20)
)

Конечно, вы должны заменить 1=1 вашим текущим состоянием и 1<>1 его реверсом.

...