Найти строки, где column1 соответствует column2 (возможно, в другой строке) - PullRequest
0 голосов
/ 14 ноября 2018

Скажем, у меня есть код ниже из таблицы под названием Table1.

Column1   | Column2
41391175  | 41000
41523664  | 41523
110505116 | 110509
110453629 | 110505
41000     | 351592

Столбец1 и Столбец2 равны NVARCHAR(10).То, что я хочу вернуть, - это все записи в столбце 1, где столбец 2 находится в столбце 1, поэтому я хочу, чтобы результат выглядел следующим образом:

Column1
41523664
110505116
41000

. Сейчас мой код выглядит так:

SELECT Column1
FROM Table1
INTERSECT  
SELECT Column2
FROM Table1 ;  

Но на данный момент он находит ТОЛЬКО тот же номер, что и в столбце 2, а не тот, который содержится в нем в столбце 1, так что я бы просто получил этот результат -

Column1

41000

Есть ли способ обойти это или получить предложение IN в INTERSECT?Я не смог найти то, что делает это после некоторого исследования.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018
select c1.column1 from table1 c1 inner join (select distinct column2 from table1) c2 on charindex(c2.column2, c1.column1) = 1
0 голосов
/ 14 ноября 2018

Полагаю, вы можете сопоставить их, используя оператор LIKE:

SELECT Column1
FROM Table1 AS t
WHERE EXISTS (
    SELECT 1
    FROM Table1 AS x
    WHERE t.Column1 LIKE x.Column2 + '%'
)

Демонстрация на DB Fiddle

...