2012-04-05 2 views
1
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 

Я пытаюсь выполнить объединение между 2 наборами результатов с использованием MSSQL, но я получаю следующее сообщение об ошибке:SQL Союз неудача

Msg 421, Level 16, State 1, Line 1 The text data type cannot be selected as DISTINCT because it is not comparable.

Я должен держать эти поля в виде текстовых полей.

Как я могу решить это, приветствия.

+1

Можете ли вы отформатировать SQL-запрос? Никто не может это прочитать. – Cylindric

+0

В чем причина, по которой вы не можете использовать 'VARCHAR (MAX)' вместо 'TEXT'? Вы бросаете их в конце концов .. – Seph

ответ

5

UNION сам по себе интерпретируется как использование DISTINCT (возможно, потому что UNION пытается свести два запроса в один список DISTINCT по своей сути). Используйте UNION ALL.

+0

Спасибо, что сделал трюк. :) – bobo2000

+3

UNION ALL (возможно) изменит фактический набор результатов. т.е. возвращать все строки, даже дубликаты, а простой UNION - нет. –

0

Проблема заключается в типе данных (ТЕКСТ). Можете ли вы изменить таблицу для использования VARCHAR (MAX)? Или удалить поля TEXT из объединения? Или, возможно, просто поместите поля в VARCHAR (MAX) в свой запрос?

VARCHAR (MAX) функционально совпадает с текстом (неограниченная длина, не сохраняется в строке и т. Д.).

+0

в MSSQL нет такой вещи, как varchar, только nvarchar. Что вызывает огромные проблемы с php. – bobo2000

+0

mmm .... Я уверен, что и varchar, и nvarchar существуют в MSSQL? –

+0

Типы данных MSSQL: http://msdn.microsoft.com/en-us/library/ms187752.aspx –

Смежные вопросы