Skip to content

Instantly share code, notes, and snippets.

@danielevans
Created November 19, 2012 04:37
Show Gist options
  • Select an option

  • Save danielevans/4109006 to your computer and use it in GitHub Desktop.

Select an option

Save danielevans/4109006 to your computer and use it in GitHub Desktop.
Brian's example
CREATE TABLE games (id int);
CREATE TABLE scores (game_id int, player_name VARCHAR(255));
INSERT INTO games(id) VALUES (1);
INSERT INTO games(id) VALUES (2);
INSERT INTO games(id) VALUES (3);
INSERT INTO scores(game_id, player_name) VALUES (1, "dj");
INSERT INTO scores(game_id, player_name) VALUES (1, "brian");
INSERT INTO scores(game_id, player_name) VALUES (1, "daniel");
INSERT INTO scores(game_id, player_name) VALUES (2, "daniel");
INSERT INTO scores(game_id, player_name) VALUES (2, "dj");
INSERT INTO scores(game_id, player_name) VALUES (3, "dj");
INSERT INTO scores(game_id, player_name) VALUES (3, "brian");
SELECT games.* FROM
(SELECT game_id FROM scores WHERE player_name = "dj") s1
INNER JOIN
(SELECT game_id FROM scores WHERE player_name = "daniel") s2
ON s1.game_id = s2.game_id
INNER JOIN games
ON games.id = s1.game_id;
-- => 1, 2
SELECT games.* FROM
(SELECT game_id FROM scores WHERE player_name = "dj") s1
INNER JOIN
(SELECT game_id FROM scores WHERE player_name = "brian") s2
ON s1.game_id = s2.game_id
INNER JOIN games
ON games.id = s1.game_id;
-- => 1, 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment