Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT * FROM t1
- LEFT JOIN t2 ON t1.id = t2.id
- UNION
- SELECT * FROM t1
- RIGHT JOIN t2 ON t1.id = t2.id
- SELECT * FROM t1
- LEFT JOIN t2 ON t1.id = t2.id
- UNION ALL
- SELECT * FROM t1
- RIGHT JOIN t2 ON t1.id = t2.id
- WHERE t1.id IS NULL
- -- t1
- id name
- 1 Tim
- 2 Marta
- -- t2
- id name
- 1 Tim
- 3 Katarina
- SELECT *
- FROM `t1`
- INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
- 1 Tim 1 Tim
- SELECT *
- FROM `t1`
- LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
- 1 Tim 1 Tim
- 2 Marta NULL NULL
- SELECT *
- FROM `t1`
- RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
- 1 Tim 1 Tim
- NULL NULL 3 Katarina
- 1 Tim 1 Tim
- 2 Marta NULL NULL
- NULL NULL 3 Katarina
- SELECT *
- FROM `t1`
- LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
- UNION
- SELECT *
- FROM `t1`
- RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
- SELECT *
- FROM `t1`
- LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
- UNION
- SELECT *
- FROM `t1`
- RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
- WHERE `t1`.`id` IS NULL;
- [Table: t1] [Table: t2]
- value value
- ------- -------
- 1 1
- 2 2
- 4 2
- 4 5
- value | value
- ------+-------
- 1 | 1
- 2 | 2
- 2 | 2
- Null | 5
- 4 | Null
- 4 | Null
- value | value
- ------+-------
- Null | 5
- 1 | 1
- 2 | 2
- 4 | Null
- select
- t1.value, t2.value
- from t1
- left outer join t2
- on t1.value = t2.value
- union all -- Using `union all` instead of `union`
- select
- t1.value, t2.value
- from t2
- left outer join t1
- on t1.value = t2.value
- where
- t1.value IS NULL
- value | value
- ------+-------
- 1 | 1
- 2 | 2
- 2 | 2
- 4 | NULL
- 4 | NULL
- NULL | 5
- -- (t1 ∩ t2): all in both t1 and t2
- select t1.value, t2.value
- from t1 join t2 on t1.value = t2.value
- union all -- And plus
- -- all in t1 that not exists in t2
- select t1.value, null
- from t1
- where not exists( select 1 from t2 where t2.value = t1.value)
- union all -- and plus
- -- all in t2 that not exists in t1
- select null, t2.value
- from t2
- where not exists( select 1 from t1 where t2.value = t1.value)
- SELECT *
- FROM leftTable lt
- LEFT JOIN rightTable rt ON lt.id = rt.lrid
- UNION
- SELECT lt.*, rl.* -- To match column set
- FROM rightTable rt
- LEFT JOIN leftTable lt ON lt.id = rt.lrid
- -- t1 left join t2
- SELECT t1.value, t2.value
- FROM t1 LEFT JOIN t2 ON t1.value = t2.value
- UNION ALL -- include duplicates
- -- t1 right exclude join t2 (records found only in t2)
- SELECT t1.value, t2.value
- FROM t1 RIGHT JOIN t2 ON t1.value = t2.value
- WHERE t2.value IS NULL
- SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.Name = t2.Name;
- SELECT t1.*, t2.*
- FROM (SELECT name FROM t1 UNION -- This is intentionally UNION to remove duplicates
- SELECT name FROM t2
- ) n LEFT JOIN
- t1
- ON t1.name = n.name LEFT JOIN
- t2
- ON t2.name = n.name;
- SELECT
- a.name,
- b.title
- FROM
- author AS a
- LEFT JOIN
- book AS b
- ON a.id = b.author_id
- UNION
- SELECT
- a.name,
- b.title
- FROM
- author AS a
- RIGHT JOIN
- book AS b
- ON a.id = b.author_id
- SELECT t1.*, t2.*
- FROM table1 t1
- INNER JOIN table2 t2
- ON 1=1;
- SELECT t1.name, t2.name FROM t1
- LEFT JOIN t2 ON t1.id = t2.id
- UNION
- SELECT t1.name, t2.name FROM t2
- LEFT JOIN t1 ON t1.id = t2.id
- SELECT * FROM students
- LEFT JOIN marks
- ON students.id = marks.id
- UNION ALL
- SELECT * FROM students
- RIGHT JOIN marks
- ON students.id = marks.id;
- (
- SELECT a.* FROM tablea a
- LEFT JOIN tableb b ON a.`key` = b.key
- WHERE b.`key` is null
- )
- UNION ALL
- (
- SELECT a.* FROM tablea a
- LEFT JOIN tableb b ON a.`key` = b.key
- where a.`key` = b.`key`
- )
- UNION ALL
- (
- SELECT b.* FROM tablea a
- right JOIN tableb b ON b.`key` = a.key
- WHERE a.`key` is null
- );
- SELECT * FROM t1
- LEFT JOIN t2 ON t1.id = t2.id
- UNION
- SELECT * FROM t1
- RIGHT JOIN t2 ON t1.id = t2.id
- SELECT * FROM t1
- LEFT JOIN t2 ON t1.id = t2.id
- UNION
- SELECT * FROM t2
- LEFT JOIN t1 ON t2.id = t1.id
- SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id;
- SELECT t1.*, t2.*
- FROM (SELECT * FROM t1 UNION SELECT name FROM t2) tmp
- LEFT JOIN t1 ON t1.id = tmp.id
- LEFT JOIN t2 ON t2.id = tmp.id;
- WITH cte_t1 AS
- (
- SELECT 1 AS id1
- UNION ALL SELECT 2
- UNION ALL SELECT 5
- UNION ALL SELECT 6
- UNION ALL SELECT 6
- ),
- cte_t2 AS
- (
- SELECT 3 AS id2
- UNION ALL SELECT 4
- UNION ALL SELECT 5
- UNION ALL SELECT 6
- UNION ALL SELECT 6
- )
- SELECT * FROM cte_t1 t1 FULL OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2;
- This gives us this answer:
- id1 id2
- 1 NULL
- 2 NULL
- NULL 3
- NULL 4
- 5 5
- 6 6
- 6 6
- 6 6
- 6 6
- SELECT * FROM cte_t1 t1 LEFT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
- UNION
- SELECT * FROM cte_t1 t1 RIGHT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
- id1 id2
- NULL 3
- NULL 4
- 1 NULL
- 2 NULL
- 5 5
- 6 6
- SELECT * FROM cte_t1 t1 LEFT OUTER join cte_t2 t2 ON t1.id1 = t2.id2
- UNION ALL
- SELECT * FROM cte_t1 t1 RIGHT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
- id1 id2
- 1 NULL
- 2 NULL
- 5 5
- 6 6
- 6 6
- 6 6
- 6 6
- NULL 3
- NULL 4
- 5 5
- 6 6
- 6 6
- 6 6
- 6 6
- SELECT t1.*, t2.*
- FROM (SELECT * FROM t1 UNION SELECT name FROM t2) tmp
- LEFT JOIN t1 ON t1.id = tmp.id
- LEFT JOIN t2 ON t2.id = tmp.id;
- id1 id2
- 1 NULL
- 2 NULL
- NULL 3
- NULL 4
- 5 5
- 6 6
- 6 6
- 6 6
- 6 6
Add Comment
Please, Sign In to add comment