Guest User

Untitled

a guest
Jan 10th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.62 KB | None | 0 0
  1. SELECT * FROM t1
  2. LEFT JOIN t2 ON t1.id = t2.id
  3. UNION
  4. SELECT * FROM t1
  5. RIGHT JOIN t2 ON t1.id = t2.id
  6.  
  7. SELECT * FROM t1
  8. LEFT JOIN t2 ON t1.id = t2.id
  9. UNION ALL
  10. SELECT * FROM t1
  11. RIGHT JOIN t2 ON t1.id = t2.id
  12. WHERE t1.id IS NULL
  13.  
  14. -- t1
  15. id name
  16. 1 Tim
  17. 2 Marta
  18.  
  19. -- t2
  20. id name
  21. 1 Tim
  22. 3 Katarina
  23.  
  24. SELECT *
  25. FROM `t1`
  26. INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
  27.  
  28. 1 Tim 1 Tim
  29.  
  30. SELECT *
  31. FROM `t1`
  32. LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
  33.  
  34. 1 Tim 1 Tim
  35. 2 Marta NULL NULL
  36.  
  37. SELECT *
  38. FROM `t1`
  39. RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
  40.  
  41. 1 Tim 1 Tim
  42. NULL NULL 3 Katarina
  43.  
  44. 1 Tim 1 Tim
  45. 2 Marta NULL NULL
  46. NULL NULL 3 Katarina
  47.  
  48. SELECT *
  49. FROM `t1`
  50. LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
  51.  
  52. UNION
  53.  
  54. SELECT *
  55. FROM `t1`
  56. RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
  57.  
  58. SELECT *
  59. FROM `t1`
  60. LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
  61.  
  62. UNION
  63.  
  64. SELECT *
  65. FROM `t1`
  66. RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
  67. WHERE `t1`.`id` IS NULL;
  68.  
  69. [Table: t1] [Table: t2]
  70. value value
  71. ------- -------
  72. 1 1
  73. 2 2
  74. 4 2
  75. 4 5
  76.  
  77. value | value
  78. ------+-------
  79. 1 | 1
  80. 2 | 2
  81. 2 | 2
  82. Null | 5
  83. 4 | Null
  84. 4 | Null
  85.  
  86. value | value
  87. ------+-------
  88. Null | 5
  89. 1 | 1
  90. 2 | 2
  91. 4 | Null
  92.  
  93. select
  94. t1.value, t2.value
  95. from t1
  96. left outer join t2
  97. on t1.value = t2.value
  98. union all -- Using `union all` instead of `union`
  99. select
  100. t1.value, t2.value
  101. from t2
  102. left outer join t1
  103. on t1.value = t2.value
  104. where
  105. t1.value IS NULL
  106.  
  107. value | value
  108. ------+-------
  109. 1 | 1
  110. 2 | 2
  111. 2 | 2
  112. 4 | NULL
  113. 4 | NULL
  114. NULL | 5
  115.  
  116. -- (t1 ∩ t2): all in both t1 and t2
  117. select t1.value, t2.value
  118. from t1 join t2 on t1.value = t2.value
  119. union all -- And plus
  120. -- all in t1 that not exists in t2
  121. select t1.value, null
  122. from t1
  123. where not exists( select 1 from t2 where t2.value = t1.value)
  124. union all -- and plus
  125. -- all in t2 that not exists in t1
  126. select null, t2.value
  127. from t2
  128. where not exists( select 1 from t1 where t2.value = t1.value)
  129.  
  130. SELECT *
  131. FROM leftTable lt
  132. LEFT JOIN rightTable rt ON lt.id = rt.lrid
  133. UNION
  134. SELECT lt.*, rl.* -- To match column set
  135. FROM rightTable rt
  136. LEFT JOIN leftTable lt ON lt.id = rt.lrid
  137.  
  138. -- t1 left join t2
  139. SELECT t1.value, t2.value
  140. FROM t1 LEFT JOIN t2 ON t1.value = t2.value
  141.  
  142. UNION ALL -- include duplicates
  143.  
  144. -- t1 right exclude join t2 (records found only in t2)
  145. SELECT t1.value, t2.value
  146. FROM t1 RIGHT JOIN t2 ON t1.value = t2.value
  147. WHERE t2.value IS NULL
  148.  
  149. SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.Name = t2.Name;
  150.  
  151. SELECT t1.*, t2.*
  152. FROM (SELECT name FROM t1 UNION -- This is intentionally UNION to remove duplicates
  153. SELECT name FROM t2
  154. ) n LEFT JOIN
  155. t1
  156. ON t1.name = n.name LEFT JOIN
  157. t2
  158. ON t2.name = n.name;
  159.  
  160. SELECT
  161. a.name,
  162. b.title
  163. FROM
  164. author AS a
  165. LEFT JOIN
  166. book AS b
  167. ON a.id = b.author_id
  168. UNION
  169. SELECT
  170. a.name,
  171. b.title
  172. FROM
  173. author AS a
  174. RIGHT JOIN
  175. book AS b
  176. ON a.id = b.author_id
  177.  
  178. SELECT t1.*, t2.*
  179. FROM table1 t1
  180. INNER JOIN table2 t2
  181. ON 1=1;
  182.  
  183. SELECT t1.name, t2.name FROM t1
  184. LEFT JOIN t2 ON t1.id = t2.id
  185. UNION
  186. SELECT t1.name, t2.name FROM t2
  187. LEFT JOIN t1 ON t1.id = t2.id
  188.  
  189. SELECT * FROM students
  190. LEFT JOIN marks
  191. ON students.id = marks.id
  192. UNION ALL
  193. SELECT * FROM students
  194. RIGHT JOIN marks
  195. ON students.id = marks.id;
  196.  
  197. (
  198. SELECT a.* FROM tablea a
  199. LEFT JOIN tableb b ON a.`key` = b.key
  200. WHERE b.`key` is null
  201. )
  202. UNION ALL
  203. (
  204. SELECT a.* FROM tablea a
  205. LEFT JOIN tableb b ON a.`key` = b.key
  206. where a.`key` = b.`key`
  207. )
  208. UNION ALL
  209. (
  210. SELECT b.* FROM tablea a
  211. right JOIN tableb b ON b.`key` = a.key
  212. WHERE a.`key` is null
  213. );
  214.  
  215. SELECT * FROM t1
  216. LEFT JOIN t2 ON t1.id = t2.id
  217. UNION
  218. SELECT * FROM t1
  219. RIGHT JOIN t2 ON t1.id = t2.id
  220.  
  221. SELECT * FROM t1
  222. LEFT JOIN t2 ON t1.id = t2.id
  223. UNION
  224. SELECT * FROM t2
  225. LEFT JOIN t1 ON t2.id = t1.id
  226.  
  227. SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id;
  228.  
  229. SELECT t1.*, t2.*
  230. FROM (SELECT * FROM t1 UNION SELECT name FROM t2) tmp
  231. LEFT JOIN t1 ON t1.id = tmp.id
  232. LEFT JOIN t2 ON t2.id = tmp.id;
  233.  
  234. WITH cte_t1 AS
  235. (
  236.    SELECT 1 AS id1
  237.    UNION ALL SELECT 2
  238.    UNION ALL SELECT 5
  239.    UNION ALL SELECT 6
  240.    UNION ALL SELECT 6
  241. ),
  242. cte_t2 AS
  243. (
  244.      SELECT 3 AS id2
  245.    UNION ALL SELECT 4
  246.    UNION ALL SELECT 5
  247.    UNION ALL SELECT 6
  248.    UNION ALL SELECT 6
  249. )
  250. SELECT  * FROM  cte_t1 t1 FULL OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2;
  251.  
  252. This gives us this answer:
  253.  
  254. id1  id2
  255. 1  NULL
  256. 2  NULL
  257. NULL  3
  258. NULL  4
  259. 5  5
  260. 6  6
  261. 6  6
  262. 6  6
  263. 6  6
  264.  
  265. SELECT  * FROM  cte_t1 t1 LEFT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
  266. UNION    
  267. SELECT  * FROM cte_t1 t1 RIGHT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
  268.  
  269. id1  id2
  270. NULL  3
  271. NULL  4
  272. 1  NULL
  273. 2  NULL
  274. 5  5
  275. 6  6
  276.  
  277. SELECT  * FROM cte_t1 t1 LEFT OUTER join cte_t2 t2 ON t1.id1 = t2.id2
  278. UNION ALL
  279. SELECT  * FROM  cte_t1 t1 RIGHT OUTER JOIN cte_t2 t2 ON t1.id1 = t2.id2
  280.  
  281. id1  id2
  282. 1  NULL
  283. 2  NULL
  284. 5  5
  285. 6  6
  286. 6  6
  287. 6  6
  288. 6  6
  289. NULL  3
  290. NULL  4
  291. 5  5
  292. 6  6
  293. 6  6
  294. 6  6
  295. 6  6
  296.  
  297. SELECT t1.*, t2.*
  298. FROM (SELECT * FROM t1 UNION SELECT name FROM t2) tmp
  299. LEFT JOIN t1 ON t1.id = tmp.id
  300. LEFT JOIN t2 ON t2.id = tmp.id;
  301.  
  302. id1  id2
  303. 1  NULL
  304. 2  NULL
  305. NULL  3
  306. NULL  4
  307. 5  5
  308. 6  6
  309. 6  6
  310. 6  6
  311. 6  6
Add Comment
Please, Sign In to add comment