Как объединить результирующие наборы без использования объединения или «или» в условии где? - PullRequest
0 голосов
/ 31 января 2020

У меня есть инструмент, который не может принять оператор объединения или условный оператор "или", в котором функция

У меня есть два запроса

Первый запрос

Select * from tableA A left outer join tableB B on A.a1=B.b1 where A.a1 =20200131 and B.b2= 'monkey '

2-й запрос

Select * from tableA where A.a1 =20200131 and   A.a3 ='Tom`

Комбинированный запрос с использованием оператора "или" ниже

Select * from tableA A left outer join tableB B on A.a1=B.b1 where B.b2= 'monkey' or A.a3 ='Tom'

Но я хочу запрос без использования " или "оператор и объединение

Ожидаются простые запросы, возможно с участием объединений или подзапросов

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Я думаю, что без использования UNION / OR, приведет к более сложному запросу. Вы можете рассмотреть следующее решение.

SELECT *
  FROM tableA a
  where a.a1=20200131
    and (   exists (select null from tableB b
                      WHERE a.a1 = b.b1
                        and b.b2='monkey')
         or exists (SELECT null FROM tableA c
                      WHERE a.a1 = c.a1
                        AND c.a3 = 'Tom'
                      )
        )

Или вы можете создать временную таблицу, а затем вставить выходные данные обоих запросов.

0 голосов
/ 31 января 2020

Попробуйте вставить оба набора результатов в новую таблицу и выбрать таблицу

    Select * into tableB from tableA A left outer join tableB B on A.a1=B.b1 where 
    A.a1 
    =20200131 and B.b2= 'monkey'

    insert into tableB
    Select * from tableA where A.a1 =20200131 and   A.a3 ='Tom'


    select * from tableB
...