Запрос на выборку совпадающих записей между двумя таблицами и не совпадающих пустых записей из второй таблицы 2 - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть 2 таблицы, как показано ниже.Мне нужно получить совпадающие имена между двумя таблицами, а также непревзойденные NULL-записи в таблице 2 секунды.Номер столбца (ключевые значения) должен быть в Join.Я использовал следующий запрос.Но есть ли способ избавиться от Union, или есть какой-нибудь другой способ написания запроса, кроме приведенного ниже?

  FirstTable
    Number|Name
      1   |Oracle
      2   |SAP
      3   |IQ
      4   |HANA
      5   |Oracle

    Second Table
    Number|Name
      1   |Oracle
      2   |
      3   |Sybase
      4   |HANA
      5   |
    Query:
    -------
    select a.name from FirstTable a, Secondtable b 
    where a.number=b.number
    and a.name=b.name
    and b.name is not null

    union

    select a.name from FirstTable a, Secondtable b 
    where a.number=b.number
    and b.name is  null

    Required Output 

    Name
    Oracle
    SAP
    HANA

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Как по мне, для этого запроса удобнее что-то типа

select distinct a.name from FirstTable a,SecondTable b
where a.number=b.number and a.name=nvl(b.name,a.name)
0 голосов
/ 15 февраля 2019

используйте объединение и объединение всех и никогда не используйте разделенное запятыми объединение

  select coalesce(a.name,b.name) as name from 
  Secondtable b  join FirstTable a
  a.name=b.name or a.number=b.number 
  union all
  select name from Secondtable where name is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...