нека кажем, че имам 2 таблици
ID Product
----------------
micrsoft sql
cisco
ID Product
----------------
sql
cisco agent
flash
Трябва да напиша заявка, която връща само "flash" като изход, тъй като няма съвпадение на таблица 1. Думите cisco и microsoft имат съвпадения на другата маса и затова трябва да се отхвърлят.
Това е повече от вътрешно присъединяване, но използванесъвпадение на шаблон / низ / съдържа. Низовете не трябва да са абсолютно съвпадение и могат да бъдат подмножество. за напр. имате Cisco в една маса и агент на Cisco в другата.
/ ****** Скрипт за SelectTopNRows команда от SSMS ****** /
SELECT
[Product]
FROM t1 INNER JOIN t2
ON t1.Product= t2.Product
order BY Product
ще удовлетворява само тези продукти, чиято стойност съвпада точно. Но аз ще трябва да запитвам дори частични съвпадения
Отговори:
1 за отговор № 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 за отговор № 2
Опитайте тази:
select Id, Product
from table2 t2
where ID Not IN ( Select IDFrom table1 )