Как мне найти все экземпляры в таблице 2 записи в таблице 1? - PullRequest
1 голос
/ 30 мая 2011

Для начала я использую SQL Server 2008 R2, и я использую его только в течение 2 недель с ограниченными знаниями в области программирования. Что мне нужно сделать, так это найти все экземпляры записи в таблице 1 (t1), в таблице 2 (t2) и вывести их в несколько таблиц (1 выходная таблица на t2.c1-c25). В настоящее время я делаю это в DOS, используя объединение и поиск, но я знаю, что в SQL должен быть лучший способ.

Вот основные детали каждой таблицы:

  • t1 содержит 1 столбец (t1.c1)
  • t1.c1 имеет 100 000 записей (строк)
  • t2 имеет 25 столбцов
  • t2 имеет 250 000 записей (строк)

Например, запись (строка) 1 в t1.c1 - это слово «собака», я хотел бы знать, где в t2.c1 появляется слово «собака», и вывести всю запись в t3 вместе с ключевым словом "собака". Тогда t3 будет выглядеть так:

t3.c1 = собака t3.c2-c28 = строка с совпадающими данными и т.д ...

В конечном итоге я получу t3, который содержит все совпадения от t2.c2 до t1.c1. Затем эту процедуру повторяют, чтобы сопоставить t1.c1 с t2.c2, t1.c1 с t2.c3 до t2.c25, каждый в своей выходной таблице (t3-t28).

Буду признателен за любую помощь, и я могу уточнить, если есть какие-либо вопросы!

1 Ответ

0 голосов
/ 30 мая 2011

Это JOIN

SELECT
   t1.c1, t2.c2, ..., t2.c28
FROM
   t1
   JOIN
   t2 ON t2.c1 LIKE '%' + t1.c1 + '%'

Предупреждения:

  • это будет работать плохо (как с лидирующим символом подстановки)
  • это соответствует, если у t1.c1 есть «крыса», а у t2.c1 - «царапина»

Если вы ожидаете точного совпадения, тогда вы получите ON t2.c1 = t1.c1 вместо

Если вы хотите, чтобы что-то «пронумеровало» «виртуальные» таблицы, добавьте это в SELECT

DENSE_RANK() OVER (ORDER BY t1.c1) AS Virtualtable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...