下面鏈接是找的資料,到這個沒加where查詢條件的!https://blog.csdn.net/c_staunch/article/details/84428904 SELECT * FROM table_name as t1 WHERE t1.id>=(RAND()*(SELECT MAX(id) FROM table_name))LIMIT 1;
這個陳述句怎么添加where條件呢,試了很多次都不行
uj5u.com熱心網友回復:
效率差的一種辦法:select * from table_name
where 條件
order by rand( ) limit 1
uj5u.com熱心網友回復:
效率好的一種辦法:select * from table_name where col1=xxx
and id>=rand()*(SELECT max(id) FROM table_name WHERE col1=xxx) limit 1;
記得查詢條件加索引。
uj5u.com熱心網友回復:
看看這個吧,估計能對您有幫助。https://blog.csdn.net/AHUA1001/article/details/103126626
uj5u.com熱心網友回復:
你的腳本采用默認排序,所以每次應該回傳了相同的記錄。加一個排序即可:
SELECT * FROM table_name as t1
WHERE t1.id>=(RAND()*(SELECT MAX(id)
FROM table_name))
ORDER BY t1.id
LIMIT 1;
如果t1.id的順序不是從1開始的(比如id為自增量,但洗掉過很多資料,造成id的“空洞”),就要考慮使用id區間隨機:
SELECT * FROM table_name as t1
WHERE t1.id>=(SELECT RAND()*(MAX(id)-MIN(id)) + MIN(id)
FROM table_name)
ORDER BY t1.id
LIMIT 1;
uj5u.com熱心網友回復:
謝謝uj5u.com熱心網友回復:
看看這個吧,估計能對您有幫助。
https://blog.csdn.net/AHUA1001/article/details/103126626
uj5u.com熱心網友回復:
效率好的一種辦法:
select * from table_name where col1=xxx
and id>=rand()*(SELECT max(id) FROM table_name WHERE col1=xxx) limit 1;
記得查詢條件加索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/30031.html
標籤:MySQL
上一篇:sql 多表聯查 導致資料重復
