これが私の2つのテーブルで、内部結合イベントのIDです。私はこのことをしたい:
表 b には があり10 albums
ます4 albums
。をeach album
選択するone record
と、レコードはアルバム内のランダムな位置になります。
4 つのレコードを取得し(these 4 records with no duplicate id)
、これらの 4 つのレコードを内部結合クエリに使用して、title
fromを取得しtable a
ます。
ここでは、テスト用のほんの少しの記録です。実際、テーブル a に 300,000 レコード、テーブル b に 2,000,000 レコードがあります。
表 a
+-----+-------+
| id | title |
+-----+-------+
| 1 | a1 |
+-----+-------+
| 2 | a2 |
+-----+-------+
| 3 | a3 |
+-----+-------+
| 4 | a4 |
+-----+-------+
| 5 | a5 |
+-----+-------+
| 6 | a6 |
+-----+-------+
表 b
+-----+--------+
| id | album |
+-----+--------+
| 1 | album1 |
+-----+--------+
| 2 | album1 |
+-----+--------+
| 3 | album1 |
+-----+--------+
| 6 | album1 |
+-----+--------+
| 2 | album2 |
+-----+--------+
| 3 | album2 |
+-----+--------+
| 5 | album3 |
+-----+--------+
| 6 | album3 |
+-----+--------+
| 3 | album4 |
+-----+--------+
| 2 | album5 |
+-----+--------+
| 4 | album5 |
+-----+--------+
| 5 | album5 |
+-----+--------+
| 1 | album6 |
+-----+--------+
| 3 | album6 |
+-----+--------+
| 2 | album7 |
+-----+--------+
| 4 | album7 |
+-----+--------+
| 1 | album8 |
+-----+--------+
| 5 | album8 |
+-----+--------+
| 3 | album9 |
+-----+--------+
| 2 | album10|
+-----+--------+
| 5 | album10|
+-----+--------+
私はmysqlクエリが苦手です。私の心の中で私はするだろう
select * from b group by album order by random() limit 0,4
4 枚のアルバムを取得し、内部結合クエリを実行します (このクエリは正しくありません。b.id が重複していないことを確認するにはどうすればよいですか?)
select * from b inner join a on b.id = a.id where (select id from b where b.album = '".$row['album']."' order by random() limit 1)
簡単で迅速な方法が必要です。最善の方法は、1 つのクエリを使用することです。どうもありがとう。