SQL联盟失败

bob*_*000 1 sql sql-server

SELECT TOP 5 
  Notices.Id, 
  NoticeLoc.Notices_Id,
  Loc.Id as Loc_Id, 
  CAST(Notices.Text AS TEXT) as Text, 
  CAST(Notices.Title AS TEXT) as Title, 
  Notices.CDate as RDate 
FROM NoticeLoc 
  JOIN Notices ON NoticeLoc.Notices_Id=Notices.Id JOIN Loc ON NLoc.Loc_Id=Loc.Id WHERE Loc_Id IN (1)

UNION 

SELECT TOP 5 
  Notices.Id, 
  '',
  '', 
  CAST(Notices.Text AS TEXT) as Text, 
  CAST(Notices.Title AS TEXT) as Title, 
  Notices.CDate as RDate 
FROM NoticeC 
  JOIN Notices ON NoticeC.Notices_Id=Notices.Id WHERE C_Id=110 AND CDate BETWEEN '10/01/2011' AND '07/14/2025' ORDER BY RDate desc
Run Code Online (Sandbox Code Playgroud)

我试图使用mssql在2个结果集之间执行联合,但是我收到以下错误:

消息421,级别16,状态1,行1无法将文本数据类型选择为DISTINCT,因为它不具有可比性.

我必须将这些字段保留为文本字段.

我怎么能解决这个问题,干杯.

Ste*_*eve 5

UNION本身被解释为使用DISTINCT(可能是因为UNION试图将两个查询固有地嵌入到一个DISTINCT列表中).使用UNION ALL.

  • UNION ALL将(可能)更改实际结果集.即返回所有行,甚至是重复行,而简单的UNION则不行. (3认同)