MySQLで全く関係のないテーブルをJOINする
FROMでカンマで並べるだけ
SELECT * FROM A, B;
例えばゲームみたいなやつで、usersテーブルと、levelsテーブルがあって、usersとlevelsには何の関係もないけど、user一人一人に全レベルを結合したいみたいなとき。
SELECT users.name, levels.level FROM users, levels;
ってやれば、
name | level |
---|---|
太郎 | Level1 |
太郎 | Level2 |
太郎 | Level3 |
花子 | Level1 |
花子 | Level2 |
花子 | Level3 |
CROSS JOIN
ググると、CROSS JOIN
ってのも出てきたけどMySQLでは違うみたい。30歳にもなってこんなことも知らなかったです。。こういうのをデカルト積っていうらしい。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.9.2 JOIN 構文
MySQL では、JOIN、CROSS JOIN、および INNER JOIN は構文上同等です (互いに置き換えることができます)。標準 SQL では、それらは同等ではありません。INNER JOIN は ON 句とともに使用され、CROSS JOIN はそれ以外のときに使用されます。