sqlSELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 5;
我要用left join 代替JOIN怎么改
谢谢
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 5;
我要用left join 代替JOIN怎么改
谢谢
FROM `table` AS t1 LEFT JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 5;
FROM `table` AS t1 LEFT JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
on t1.id >= t2.id
ORDER BY t1.id LIMIT 5;
可一直取前id5条 ,效果没了。
1
2
3
4
5
条上面的sql是随机取记录
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
效率太低谢谢能实现随机取就行!谢谢
随机取多少? 20?ID 是不是主键?是什么类型?auto_increment ?
ID是否连续?怎么好象变成是我在提问?问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
id title
1 a
2 b
3 c如果能在id 1到100万之间取一个id值
用id>随机值加 limit 20也可以
就是不知道有没有随机一个数!谢谢了
id int类型
连续 主键 auto_increment
随机取10条
頂,版主大人的這個方法好用order by rand() 效率真的很差
以前看過別人寫的優化代碼, 但很長, 沒能記下來...殘念中...
----------------------
http://www.phpzy.com