MySQLはrand関数で乱数を実現
1971 ワード
SELECT FLOOR(7 + ( RAND() * 6)); 一定範囲でランダムに数値を生成
友達がmysqlで乱数を使う方法を聞いた.
どのように1つの文を书いて数百本のMySQLデータを更新することができます!
MyQLデータベースをテストする必要があります.中には1万件以上のデータのデータベースがあります.PHPファイルを書くにはどうすればいいですか.何百件もの情報を更新するたびに、私は循環して1回1つの情報を更新します.そうすれば、私はWHILEで書けばいいことを知っています.もし1回の更新が100件のデータのように書けばいいですか.
正解はUPDATE cdb_posts SET views = rand();
MySQLの例:
Googleを検索すると、ネット上では基本的にmax(id)*randを検索してランダムにデータを取得します.
上の文はJOIN、mysqlのフォーラムで使われています
例3の文を書き換える
最後に、文を完璧にし、MIN(id)の判断を加える.私がテストを始めたとき、MIN(id)の判断を加えなかったため、結果の半分の時間はいつも表の前の数行にクエリーされ、完全なクエリー文は以下の通りです.
友達がmysqlで乱数を使う方法を聞いた.
どのように1つの文を书いて数百本のMySQLデータを更新することができます!
MyQLデータベースをテストする必要があります.中には1万件以上のデータのデータベースがあります.PHPファイルを書くにはどうすればいいですか.何百件もの情報を更新するたびに、私は循環して1回1つの情報を更新します.そうすれば、私はWHILEで書けばいいことを知っています.もし1回の更新が100件のデータのように書けばいいですか.
正解はUPDATE cdb_posts SET views = rand();
MySQLの例:
1:select * from tableA order by rand() limit 5;
。 15 , 8 。
, rand() order by , 。You can't use a column with rand() values in an ORDER BY clause, because ORDER BY wolud evaluate the column multiple times.
Googleを検索すると、ネット上では基本的にmax(id)*randを検索してランダムにデータを取得します.
2:
SELECT *
FROM tableA AS A1
JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM tableA)) AS a2_id) AS A2
WHERE A1.id >= A2.a2_id
ORDER BY A1.id ASC
LIMIT 5;
5 。 , 5 。 , 15 , 0.01 。
上の文はJOIN、mysqlのフォーラムで使われています
3:
SELECT *
FROM tableA
WHERE id>=(SELECT FLOOR(MAX(id) * RAND()) FROM tableA)
ORDER BY id
LIMIT 5;
, 0.5 , , 。 。
例3の文を書き換える
4:
SELECT *
FROM tabelA
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM tableA)))
ORDER BY id
LIMIT 5;
, , 0.01
最後に、文を完璧にし、MIN(id)の判断を加える.私がテストを始めたとき、MIN(id)の判断を加えなかったため、結果の半分の時間はいつも表の前の数行にクエリーされ、完全なクエリー文は以下の通りです.
5:
SELECT *
FROM tableA
WHERE id >= (SELECT FLOOR(RAND() * ((SELECT MAX(id) FROM tableA) - (SELECT MIN(id) FROM tableA)) + (SELECT MIN(id) FROM tableA)))
ORDER BY id
LIMIT 5;
6:
SELECT *
FROM tableA as a1
JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM tableA) - (SELECT MIN(id) FROM tableA)) + (SELECT MIN(id) FROM tableA)) AS a2_id) AS a2
ORDER BY id
LIMIT 5;
php 10 ,
5 0.147433
6 0.015130
JOIN WHERE