양쪽 테이블에 데이터가 다 있을 때 합친다.
SELECT *
FROM 테이블1, 테이블2
WHERE 테이블1.Id = 테이블2.userId
SELECT *
FROM 사용자테이블
LEFT JOIN 주문테이블 ON 사용자테이블.Id=주문테이블.userId
한 번도 주문 안한 고객 정보도 보고 싶을 때는 WHERE 주문테이블ID IS NULL 등으로 입력 가능
보통은 LEFT JOIN을 많이 사용한다.
LEFT OUTER JOIN 과 LEFT JOIN은 동일하게 작동
African Cities
city에도 name이 있고, country에도 name이 있어서 select할 때도 명시해주기.
SELECT city.name
FROM city
INNER JOIN country ON city.countrcode = country.code
WHERE country.continent = "Africa"
Asian Population(Population Cencus)
SELECT SUM(city.population)
FROM city
INNER JOIN country ON city.countrycode = country.code
WHERE country.continent = "Asia"
Average Population of Each Continent
SELECT country.continent
, FLOOR(AVG(city.population))
FROM city
INNER JOIN country ON city.countrycode = country.code
GROUP BY country.continent
Self JOIN
SELECT Employee.Name AS Employee
FROM employee
INNER JOIN employee as Manager ON Employee.managerid = Manager.id
WHERE Employee.Salary > Manager.Salary
SELECT today.id AS
FROM Weather AS today
INNER JOIN Weather AS yesterday ON yesterday.id + 1 = today.id
WHERE today.temperature > yesterday.temperature
SELECT today.id
FROM Weather AS today
INNER JOIN Weather AS yesterday ON DATE_ADD(yesterday.recordDate, INTERVAL 1 DAY) = today.recordDate
WHERE today.temperature > yesterday.temperature
UNION
2) 20 21
2) 22 23
SELECT f1.X, f1.Y, f2.X, f2.Y
FROM functions AS f1
INNER JOIN functions AS f2 ON f1.X=f2.Y AND f1.Y=f2.X
SELECT f1.X, f1.Y
FROM functions AS f1
INNER JOIN functions AS f2 ON f1.X=f2.Y AND f1.Y=f2.X
WHERE f1.X < f1.Y
ORDER BY X
유니온 위에 쿼리에는 ORDER BY를 쓸 수 없다.