如果没有要加入的记录,请忽略SQL INNER JOIN?

Nat*_*han 12 t-sql sql-server inner-join

我有以下加入

INNER JOIN @SynonymTable AS A ON ([Products].[Title] LIKE A.[Synonym])
Run Code Online (Sandbox Code Playgroud)

@SynonymTable表变量包含(如果需要)项列表,例如:

%shirt%
%blouse%
%petticoat%
Run Code Online (Sandbox Code Playgroud)

这些都基于特定关键字搜索的同义词列表,例如术语"衬衫" - 然后我可以找到所有可能相关的项目等.问题是如果没有提供关键字查询显然没有加入任何东西.

如果同义词表中没有项目,有没有消除连接或返回所有项目?

在查询中找到了绕过最后INNER JOIN的帖子,但我无法让它适用于我的场景?

任何帮助或建议都会很棒.

And*_*ttó 7

你可以使用这样一个选择:

SELECT * FROM Products 
LEFT JOIN @SynonymTable AS A ON ([Products].[Title] LIKE A.[Synonym])
WHERE A.[Synonym] IS NOT NULL 
      OR NOT EXISTS (SELECT B.[Synonym] FROM @SynonymTable B)
Run Code Online (Sandbox Code Playgroud)