2015-11-18 61 views
0

我有這樣的查詢:如何找到在SQL Server表中的列值相同的行

SELECT 
    * 
FROM 
    sub_aminer_paper 
WHERE 
    p_abstract LIKE (
        SELECT 
         p_abstract 
        FROM 
         sub_aminer_paper 
        GROUP BY 
         p_abstract 
        HAVING 
         COUNT(pid) > 1 
        ) 
AND 
    pid IN (784502,787096,789536) 
ORDER BY 
    pid 

從中我想檢索具有相同的值p_abstract列行,其中在textp_abstract列數據類型。雖然執行這個查詢,我得到了以下錯誤:

The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. 

請幫助理清這一點。

謝謝!

回答

0

檢查是否這是你所期待的。

SELECT * 
FROM sub_aminer_paper 
WHERE pid IN (784502,787096,789536) 
and CAST(p_abstract AS varchar(max)) in (
    SELECT CAST(p_abstract AS varchar(max)) 
    FROM sub_aminer_paper 
    WHERE pid IN (784502,787096,789536) 
    Group BY CAST(p_abstract AS varchar(max)) 
    having count(*) > 1) 
ORDER by pid 
+0

同樣的錯誤'GROUP BY p_abstract'列'p_abstract'的 – maliks

+0

數據類型爲查詢即'text' – maliks

+0

我提到鑄造現在將文本字段設置爲varchar(max)。你可以嘗試讓我知道,如果它通過 – PK20

0

你必須在線路比較文本字段校驗

WITH PAPERS AS(
    SELECT 
      pid, 
      BINARY_CHECKSUM(p_abstract) as chksum 
     FROM 
      sub_aminer_paper 
), DOUBLES AS (
    SELECT 
     chksum 
     ,qty = COUNT(*) 
     FROM 
     papers 
     GROUP BY 
     chksum 
     HAVING 
     COUNT(*) > 1 
) 
SELECT * 
    FROM 
     PAPERS P 
     JOIN DOUBLES D ON P.chksum = D.chksum 
相關問題