2013-05-26 57 views
0

我有這個民意調查的事情,民意調查A,有3個選項讓我們說:Option a option b option c,option a got 3 votes,option b got 2 votes option c got 3 votes,mysql得到最大值與多個選擇

OPTIONS  VOTES 
    option a  3 
    option b  2 
    option c  3 

我有這個MySQL查詢獲得選項和訂單由votesCount,限制1獲得最佳答案,但在我的例子中,有兩個選項頂部,他們都有最高值,我想一個查詢來獲得這兩個選項,不僅一個,所以我必須擺脫限制1

Mysql查詢是

$query = "SELECT `option` FROM `options` WHERE `pid` = '$pid' AND `votesCount` != '0' ORDER BY `votesCount` DESC LIMIT 1"; 

有什麼建議嗎?

+1

'SELECT MAX(票).. ' – 2013-05-26 23:09:11

+0

@yvytty代碼顯示 – Emad

+0

@yvytty我認爲有一個MySQL的查詢,因爲我可以刪除限制和做的PHP,這是主要問題,要求一個MySQL查詢,如果它存在 – Emad

回答

0

感謝@Gordon Linoff的提示,這是它的現在

$query = "SELECT `option` FROM `options` WHERE `pid` = '$pid' AND `votesCount` = (SELECT MAX(`votesCount`) FROM `options` WHERE `pid` = '$pid' ORDER BY `votesCount` DESC LIMIT 1)"; 
    ///Just a DB function, don't mind the 0, i'm using a class 
    $res = $db->get_rows($db->select($query),0); 
    $merged = array(); 
    foreach ($res as $r){ 
     $merged[] = $r->option; 
    } 
    $merged = implode(',',$merged); 
    return $merged; 
4

這裏是任何SQL方言的標準方式:

select p.* 
from poll p 
where p.votes = (select max(votes) from poll) 
+0

感謝提示,它的工作原理如下:SELECT'option' FROM'options' WHERE'pid' ='$ pid'AND'votesCount'!'''AND'votesCount' =(SELECT MAX('votesCount') FROM'options' WHERE'pid' ='$ pid'ORDER BY'votesCount' DESC LIMIT 1) – Emad