2012-10-24 14 views
5

我寫一個SQL像問問sql dilettante,誰可以告訴我這個sql是否有效?

SELECT uid 
    FROM search 
WHERE MATCH(product) AGAINST('football basketball') 
    AND status=1 
ORDER BY MATCH(product) AGAINST('football basketball') DESC 

我運行它在MySQL好,但我不知道它是否是有效的。我想知道這個「MATCH(產品)反對('''籃球')」跑了兩次嗎?

+0

不會:ORDER BY產品DESC做同樣的工作嗎? –

+0

@PanagiotisPalladinos,'MATCH ... AGAINST'可以返回匹配的相關性。但是,似乎有一些棘手的方面。查看關於此文檔頁面的第二條評論:http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – dan1111

回答

0

這可能無擔憂地工作:

SELECT uid, MATCH(product) AGAINST('football basketball') as imatch 
    FROM search 
WHERE imatch 
    AND status=1 
ORDER BY imatch DESC 
0

如果你不想選擇匹配,以及你需要把別名的where子句。但別名只運行一次,並將結果存儲在「變量」中。

SELECT uid 
FROM search 
WHERE MATCH(product) AGAINST('football basketball') as imatch 
AND status = 1 
ORDER BY imatch DESC 
相關問題