SQL語句
public function get_radom_article(){
$table1 = $this->get_table('article') ;
$sql = 'SELECT *
FROM `'.$table1 .'` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `'.$table1 .'`)-(SELECT MIN(id) FROM `'.$table1 .'`))+(SELECT MIN(id) FROM `'.$table1 .'`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 10';
return $this->query_all($sql);
}
提取
<?php foreach($this->radom_articles AS $key => $val) { ?>
<li><a href="article/<?php echo $val['id']; ?>" title="<?php echo $val['title']; ?>"><?php echo $val['title']; ?></a></li>
<?php } ?>
#可以提取到標題為什麼提取不到id?
這些提取到的數據,標題全部沒有錯誤,但是為什麼ID全部都是一樣的,也就是沒有提取到對應標題字段的id? SQL是哪裡出錯了嗎?各位大神指導下
標題的欄位是title,id欄位是id
你把
*
換成t1.*
看看第一:你連表查詢的t1.id >= t2.id就已經會出現重複的數據,雖然你的演算法看起來這個可能性比較小。
第二:結果集包含多個id字段,php取出來的結果出現在select後面的最後的id字段會覆蓋之前的值,當然也可能查詢優化器會改變select後列的順序也說不定。