読者です 読者をやめる 読者になる 読者になる

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 はそれ以外のときに使用されます。