【问题标题】:FTS right join in view with ISNULLFTS 右加入视图与 ISNULL
【发布时间】:2020-06-24 01:03:24
【问题描述】:

我正在尝试为全文搜索创建带有左(或右)连接的视图,显然你不能。我尝试使用IsNull 加入,但没有工作。

我将如何创建一个查询,该查询将进入具有 FTS 右/左连接的视图中?

CREATE TABLE #Tline
(
  Id int Primary Key, 
  [name] varchar(255) null
)
GO

Insert into #Tline (id,name) Values(1,'test 1')
Insert into #Tline (id,name) Values(2,'test 2')
Insert into #Tline (id,name) Values(3,'test 3')
Insert into #Tline (id,name) Values(4,'test 4')
Insert into #Tline (id,name) Values(5,'test 5')
GO

CREATE TABLE #Task (Id int Primary Key, TlineId int null)
GO

Insert into #Task (id,TlineId) Values(1,2)
Insert into #Task (id,TlineId) Values(2,3)
Insert into #Task (id,TlineId) Values(3,4)
GO

SELECT 
  #Tline.Id, #Task.Id
FROM 
  #Tline 
  JOIN #Task ON #Tline.Id = ISNULL(#Task.TlineId,0)
GO

DROP 
  TABLe #Tline
DROP 
  TABLe #Task
GO

【问题讨论】:

  • 如果您尝试创建视图,我希望代码中有CREATE VIEW。也就是说,我仍然不知道你的问题是什么。
  • @GordonLinoff,相应地更新了问题
  • 我希望在on 子句中看到contains。顺便说一句:FTS 往往不能很好地处理数字数据。 (This 就是一个例子。)

标签: sql sql-server tsql


【解决方案1】:

如果您希望 #Tline 中的所有行具有匹配的任务:

SELECT l.Id, t.Id
FROM #Tline l LEFT JOIN
     #Task t
     ON l.Id = t.TlineId;

鉴于您提供的数据,这似乎是一个合理的查询。

【讨论】:

  • 是的,这可以在正常查询中工作,但在创建具有唯一索引的视图时不起作用。 (当然这是针对 FTS 的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2016-01-07
  • 2017-10-03
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多