假设我有2张桌子
ID Product
----------------
micrsoft sql
cisco
ID Product
----------------
sql
cisco agent
flash
我需要编写一个只返回'flash'作为输出的查询,因为它在表1上没有匹配。单词cisco和microsoft在另一个表上有匹配,因此需要被丢弃。
这更多是内连接,但使用模式/字符串匹配/包含。字符串不一定是绝对匹配,也可以是子集。例如。你有一个表中的cisco和另一个表中的cisco代理。
/ ******来自SSMS ****** /
的SelectTopNRows命令的脚本SELECT
[Product]
FROM t1 INNER JOIN t2
ON t1.Product= t2.Product
order BY Product
只会满足那些价值完全匹配的产品。但我需要查询甚至部分匹配
答案 0 :(得分: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;
性能不佳,所以我希望你没有太多数据。
答案 1 :(得分:0)
试试这个:
select Id, Product
from table2 t2
where ID Not IN ( Select IDFrom table1 )