mysql隨機擷取最佳化語句

來源:互聯網
上載者:User
在網上找了一個隨機取數語句,結合了自己的需求,運行出錯,
看了半天沒發現出錯的地方,求指點
$str="select * from dizhi where shijiancuo>'$times' GROUP BY user HAVING COUNT(user) > 4 AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM dizhi)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id ASC LIMIT 1" ;


回複討論(解決方案)

錯誤資訊是什嗎?

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\www\AppServ\www\tuijianshuchu.php on line 23

23代碼如下
$result=mysql_query($str, $con);  //送出查?$rows=mysql_num_rows($result); //23行

因為是你的sql語句出錯了 你把$str語句列印下看是什麼東東

$str在1樓貼了

$result=mysql_query($str, $con) or die(mysql_error());

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM dizhi)) AS id) AS t2 ' at line 1

select * from
(select * from dizhi where shijiancuo>'$times' GROUP BY user HAVING COUNT(user) > 4) AS t1
JOIN
(SELECT ROUND(RAND() * (SELECT MAX(id) FROM dizhi)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 1

JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM dizhi)) AS id from dizhi) AS t2

8樓的不行,7樓的OK,多謝了
一直沒搞明白這句的意思

 (SELECT ROUND(RAND() * (SELECT MAX(id) FROM dizhi)) AS id) AS t2 

網上說ROUND 函數用於把數值欄位舍入為指定的小數位元,所以不太理解這語句的結果是什麼

RAND 產生一個小於 1 的隨機數
SELECT MAX(id) FROM dizhi 取得表 dizhi 中最大的 id 值
ROUND 四捨五入化為整數

這個查詢指令的意思是:
任取表中的一個 id 值

理解了,3Q。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.