SQL Vs Pythons
SQL Vs Pythons
v/s
Python Pandas
@vimanyuchaturvedi
INNER JOIN
LEFT_TABLE RIGHT_TABLE
ID LEFT_VALUE ID RIGHT_VALUE
4 LEFT 4 6 RIGHT 4
SQL
SELECT * FROM LEFT_TABLE AS LT INNER JOIN RIGHT_TABLE AS RT
ON LT.ID = RT.ID
pandas
SELF JOIN
LEFT_TABLE LEFT_TABLE
ID LEFT_VALUE ID LEFT_VALUE
1 LEFT 1 1 LEFT 1
2 LEFT 2 2 LEFT 2
3 LEFT 3 3 LEFT 3
4 LEFT 4 4 LEFT 4
ID LEFT_VALUE LEFT_VALUE2
1 LEFT 1 LEFT 1
2 LEFT 2 LEFT 2
3 LEFT 3 LEFT 3
4 LEFT 4 LEFT 4
SQL
SELECT * FROM LEFT_TABLE AS LT INNER JOIN LEFT_TABLE AS LT2
ON LT.ID = LT2.ID
pandas
LEFT JOIN
LEFT_TABLE RIGHT_TABLE
ID LEFT_VALUE ID RIGHT_VALUE
1 LEFT 1 1 RIGHT 1
2 LEFT 2 4 RIGHT 2
3 LEFT 3 5 RIGHT 3
4 LEFT 4 6 RIGHT 4
ID LEFT_VALUE RIGHT_VALUE
1 LEFT 1 RIGHT 1
2 LEFT 2 NULL
3 LEFT 3 NULL
4 LEFT 4 RIGHT 2
SQL
SELECT * FROM LEFT_TABLE AS LT LEFT JOIN RIGHT_TABLE AS RT
ON LT.ID = RT.ID
pandas
RIGHT JOIN
LEFT_TABLE RIGHT_TABLE
ID LEFT_VALUE ID RIGHT_VALUE
1 LEFT 1 1 RIGHT 1
2 LEFT 2 4 RIGHT 2
3 LEFT 3 5 RIGHT 3
4 LEFT 4 6 RIGHT 4
ID LEFT_VALUE RIGHT_VALUE
1 LEFT 1 RIGHT 1
4 LEFT 4 RIGHT 2
5 NULL RIGHT 3
6 NULL RIGHT 4
SQL
SELECT * FROM LEFT_TABLE AS LT RIGHT JOIN RIGHT_TABLE AS RT
ON LT.ID = RT.ID
pandas
FULL JOIN
LEFT_TABLE RIGHT_TABLE
ID LEFT_VALUE ID RIGHT_VALUE
1 LEFT 1 1 RIGHT 1
2 LEFT 2 4 RIGHT 2
3 LEFT 3 5 RIGHT 3
4 LEFT 4 6 RIGHT 4
ID LEFT_VALUE RIGHT_VALUE
1 LEFT 1 RIGHT 1
2 LEFT 2 NULL
3 LEFT 3 NULL
4 LEFT 4 RIGHT 2
5 NULL RIGHT 3
6 NULL RIGHT 4
SQL
SELECT * FROM LEFT_TABLE AS LT FULL OUTER JOIN RIGHT_TABLE
AS RT ON LT.ID = RT.ID
pandas
UNION ALL
LEFT_TABLE RIGHT_TABLE
ID VALUE ID VALUE ID VALUE
1 VALUE 1
4 VALUE 2
5 VALUE 3
6 VALUE 4
SQL
SELECT * FROM LEFT_TABLE UNION ALL SELECT * FROM RIGHT_TABLE
pandas
UNION
LEFT_TABLE RIGHT_TABLE
ID VALUE ID VALUE
1 VALUE 1 1 VALUE 1
2 VALUE 2 4 VALUE 2
3 VALUE 3 5 VALUE 3
4 VALUE 4 6 VALUE 4
ID VALUE
1 VALUE 1
2 VALUE 2
3 VALUE 3
4 VALUE 4
4 VALUE 2
5 VALUE 3
6 VALUE 4
SQL
SELECT * FROM LEFT_TABLE UNION SELECT * FROM RIGHT_TABLE
pandas
INTERSECT
LEFT_TABLE RIGHT_TABLE
ID VALUE ID VALUE
1 VALUE 1 1 VALUE 1
2 VALUE 2 4 VALUE 2
3 VALUE 3 5 VALUE 3
4 VALUE 4 6 VALUE 4
ID VALUE
1 VALUE 1
SQL
SELECT * FROM LEFT_TABLE INTERSECT SELECT * FROM RIGHT_TABLE
pandas
EXCEPT
LEFT_TABLE RIGHT_TABLE
ID VALUE ID VALUE
1 VALUE 1 1 VALUE 1
2 VALUE 2 4 VALUE 2
3 VALUE 3 5 VALUE 3
4 VALUE 4 6 VALUE 4
ID VALUE
2 VALUE 2
3 VALUE 3
4 VALUE 4
SQL
SELECT * FROM LEFT_TABLE EXCEPT SELECT * FROM RIGHT_TABLE
pandas
SEMI JOIN
LEFT_TABLE RIGHT_TABLE
VALUE 2 2 VALUE 2
1 VALUE 1
VALUE 3 3 VALUE 3
2 VALUE 2
3 VALUE 3
4 VALUE 4
SQL
SELECT * FROM LEFT_TABLE WHERE VALUE IN (SELECT VALUE FROM
RIGHT_TABLE )
pandas
ANTI JOIN
LEFT_TABLE RIGHT_TABLE
VALUE ID VALUE
ID VALUE
VALUE 2 1 VALUE 1
1 VALUE 1
VALUE 3 4 VALUE 4
2 VALUE 2
3 VALUE 3
4 VALUE 4
SQL
SELECT * FROM LEFT_TABLE WHERE VALUE NOT IN (SELECT VALUE
FROM RIGHT_TABLE )
pandas
CROSS JOIN
ID1 ID2
LEFT_TABLE RIGHT_TABLE
1 1
ID ID
1 2
1 1
2 1
2 2
2 2
3
3 1
3 2
SQL
SELECT * FROM LEFT_TABLE CROSS JOIN RIGHT_TABLE
pandas