2015-07-21 3 views
0

позволяет сказать, что у меня есть 2 таблицыSQL присоединиться строки матч

ID  Product 
---------------- 
micrsoft sql 
cisco 


ID  Product 
---------------- 
sql 
cisco agent 
flash 

Мне нужно написать запрос, который возвращает только «вспышка» в качестве выходного это еще потому не имеет матч в таблице 1. Слова CISCO и Microsoft имеют совпадения на другом столе, поэтому их необходимо отбросить.

Это скорее внутреннее соединение, но использование сочетания/строки/строки. Строки не должны быть абсолютным совпадением и также могут быть подмножеством. например. у вас есть cisco в одной таблице и агент cisco в другой.

/****** Скрипт для SelectTopNRows команды из SSMS ******/

SELECT 
     [Product] 
    FROM t1 INNER JOIN t2 

ON t1.Product= t2.Product 
order BY Product 

только satisy тех продуктов, ценность которых точно соответствуют. Но я должен был бы запросить даже частичные совпадения

ответ

1

Вы можете использовать like для этой цели:

SELECT t2.[Product] 
FROM t2 LEFT JOIN 
    t1 
    ON t1.Product LIKE '%' + t2.Product + '%' OR 
     t2.Product LIKE '%' + t1.Product + '%' 
WHERE t1.Product IS NULL 
ORDER BY t2.Product; 

Производительность не будет хорошо, так что я надеюсь, что вы не слишком много данных.

+0

есть около 200 000 строк – vardha

+0

почему вы добавили «t1.product равно нулю»? – vardha

+0

Чтобы получить строки, которые не совпадают, как говорится в вашем вопросе. –

0

Попробуйте это:

select Id, Product 
from table2 t2 
where ID Not IN (Select IDFrom table1) 
Смежные вопросы