2011-12-20 66 views
1

我正在交友網站上工作,並感謝我設法使這個查詢的偉大答案。我完全是一個新手:)Mysql聯合查詢重複行

該聯合查詢的問題是,它似乎並沒有刪除重複的條目,我不知道爲什麼

用戶名 - 是加入網站的人的名字;

願望 - 是關於他們願意做什麼,他們的個人資料頁面的一部分。

例如,如果我搜索單詞「午餐」(如查詢波紋管),查詢發現,有字符「午餐」在他們用戶名或在他們的願意人個人資料。

但有時候,有人在他的用戶名既有字「午餐」,並在它的意願的個人資料。

我該如何刪除這些重複行?

我使用這個查詢的PHP導航代碼。

你能幫忙嗎?

result = mysql_query(" 

(SELECT 1 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND username LIKE '%lunch%') 

UNION 

(SELECT 2 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND age BETWEEN '28' AND '45' AND willingness LIKE '%lunch%') 

ORDER BY sort_col 

LIMIT ".$offset.", ".$rowsperpage.""); 

任何想法?

謝謝!

回答

1

解決方法。你可以使用:

SELECT username, pic0 
FROM ".$table." 
WHERE (username LIKE '%lunch%') 
    OR (username IS NOT NULL 
     AND age BETWEEN 28 AND 45 
     AND willingness LIKE '%lunch%' 
    ) 
ORDER BY (username LIKE '%lunch%') DESC 
1

您的sort_col保證兩個查詢之間的行總是不同的(1對2),因此不會發生重複。

+0

這是很大的,我看到他們,當我實際使用的代碼,任何想法爲什麼?請記住,當用戶名稱爲「lunchy」時,「午餐」一詞和重複行會出現,並且他的個人資料中也將該名稱稱爲「午餐」。所以查詢列出了兩次。 – webmasters 2011-12-20 22:07:20

+1

@webmasters正如我所說的,用戶名爲「lunchy」的行獲得sort_col值爲1,並且包含「lunch」的概要文件所在的行獲得sort_col值爲2.因此,兩行不是完全重複的,並且不會被UNION操作。 – 2011-12-20 22:09:53

+0

泰非常清理它。有沒有一種方法,用戶名「lunchy」從查詢中刪除它的配置文件行,或類似的東西?基本上找到解決此問題的解決方案? – webmasters 2011-12-20 22:13:20