0
我搜索很多,但沒有得到任何幫助與隨機記錄mysql.I使用隨機查詢從數據庫中獲取隨機數據與一些限制不在。如果數據庫包含100條記錄,並假設我給30作爲隨機函數的限制,有些不在id中。我的問題是,當它第一次觸及時,我不在id中給出空白,它隨機給我30條記錄。但是,對於第二次除了最後30條記錄(即不在變量中)之外,它應該給我70條記錄中的另外30條記錄,但它給我的不到30條即(28,29)。這是因爲它首先應用隨機函數和限制,然後用不in.My查詢過濾它是象下面這樣:隨機查詢Zend
$subQuery = $this->select()
->from(array('s' => 'shop'), array('s.shop_id','b.shop_name','b.shop_template_id'))
->order('RAND()')
->where('s.shop_id NOT in (?)', $shop_id)
->limit(30);
$query = $this->select()
->from(array('b' => $subQuery), array('*'))
->join(array('p' => 'product'), 's.shop_id = p.shop_id', array('p.product_price'))
->setIntegrityCheck(false);
$resultRows = $this->fetchAll($query);
更新:我爲什麼它是爲有問題的(28,29)記錄的某個時候,因爲連接查詢包含產品的店,如果一些商店正在0產品它沒有得到那shop.My問題是,不管產品怎麼能從數據庫得到那家商店。
謝謝您的回答一兩件事,我們希望它應該取店隨機它幹嘛,但默認情況下它適用asc.We不想任何ASC和DESC條件應該得到整個數據庫隨機店我們嘗試 - > order('RAND()') - > order('shop_name DESC') - > order('shop_id DESC')仍然沒有給出隨機data.any建議。 – user3406754
不確定你在這裏的意思,對不起。如果您使用rand()命令,則記錄將以隨機順序返回。如果您添加另一個訂單,則不會讓它們隨機化 - 在這種情況下,您必須將第一個(隨機)查詢包裝在子查詢中,並對該選擇應用另一個訂單。但你似乎要求隨機訂購,你應該從使用上面的代碼中獲得。 RAND()函數上面的 – Bing
默認情況下會按照升序排列隨機記錄,我們不需要它,它應該從任何順序中選擇隨機數據,而不是升序或降序。 – user3406754