У меня есть 2 таблицы. Основная таблица T1, исторические данные T2. Требуется запрос EXISTS для столбца Имя для всех записей в T1, которые имеют несколько записей имени в T2 - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть 2 таблицы.

  • Основная таблица T1
  • Исторические данные T2

Я хочу запрос EXISTS для столбца Имя для всехзаписи в T1, которые имеют несколько записей имени в T2.

select first_name
     , * 
  from T1
 where exists (select First_name from T1 where T1.First_name != T2.First.name)

Ответы [ 3 ]

0 голосов
/ 21 сентября 2019

Вы можете объединить основную таблицу с подзапросом, который выбирает все повторяющиеся имена в T2

SELECT T1.*
FROM T1
JOIN (
    SELECT first_name
    FROM T2
    GROUP BY first_name
    HAVING COUNT(*) > 1
) AS x ON x.first_name = T1.first_name
0 голосов
/ 21 сентября 2019

Коррелированный подзапрос кажется самым простым подходом здесь.Это также может оказаться более эффективным, поскольку в игру не входит агрегация:

SELECT T1.*
FROM T1
WHERE (SELECT COUNT(*) FROM T2 WHERE T1.first_name = T2.T1.first_name) > 1
0 голосов
/ 21 сентября 2019

Я думаю, вам нужно это:

select t1.* from T1
where exists (select 1 
                from T2
               where T1.First_name = T2.First_name
               having count(*)>1
             )
...