2011-12-17 60 views
1

我想知道有人可以幫助我。MySQL - 使用LEFT JOIN返回一個隨機記錄

我想在我的網站上顯示隨機「民意調查」,我在我的數據庫中有大約50個,我希望每次人重新加載頁面時都顯示一個不同的人。

要獲得民意調查中,我使用下面的SQL查詢....但這獲取表中的第一個...我怎麼能告訴它來獲得一個隨機的「民意調查」

SELECT * 
    FROM polls 
    LEFT JOIN pollanswers ON polls.pollID = pollanswers.pollID 
WHERE polls.pollID = 1 
ORDER By pollAnswerListing ASC 

非常感謝

回答

0

您必須將pollID改變一些隨機數

polls.pollID = 1 

到例如

polls.pollID = 9 
+0

如果你在任何時候有50次民意調查,這可能是一個很好的解決方案,不多也不少。但是,如果稍微更少或更多,該怎麼辦?然後您需要首先查詢數據庫以查找有多少個數據庫,然後在第二個查詢中提供一個隨機輪詢。我會說ORDER BY RAND()是一個更好的方法。 – sbrattla 2011-12-17 15:58:26

3

使用ORDER BY RAND() LIMIT 1,並且可能刪除WHERE子句,假設polls.pollID是您的主鍵。

SELECT * 
FROM polls 
LEFT JOIN pollanswers ON polls.pollID = pollanswers.pollID 
/*WHERE polls.pollID = 1*/ 
ORDER BY RAND() LIMIT 1 
+0

感謝您的迴應...它沒有工作,雖然 – BigJobbies 2011-12-17 12:45:47

+0

@BigJobbies哎呀,關鍵字'ORDER BY'上面缺少。本應該是'rand()limit 1' – 2011-12-17 12:52:28

+0

@BigJobbies:什麼「沒有工作」?這個建議似乎是正確的(在'訂單'修正之後),那麼你得到了什麼? – 2011-12-17 12:54:31

0

生成1到50之間的隨機數(假設你有50次投票) 並傳遞到你的MySQL查詢作爲PollId值而不是硬編碼值1

var randomId= rand(5, 50); 

使用此randomId在您的查詢

+0

你不能假設,'(SELECT COUNT(*)FROM polls)AS max' :) – 2011-12-17 14:00:02

+0

webarto:的確如此。但是在他提到的問題中,它差不多是50.我假設處理這個查詢或網站的人將具有從數據庫中讀取計數的意義。答案只是關於mysql連接值。 – Shyju 2011-12-17 14:08:05

+0

你是對的,但整個查詢都是錯誤的。乾杯。 – 2011-12-17 14:15:45