SELECT DISTINCT CART_ID FROM (SELECT * FROM CART_PRODUCTS WHERE NAME = '우유') A JOIN (SELECT * FROM CART_PRODUCTS WHERE NAME = '요거트') B USING(CART_ID) ORDER BY CART_ID;
SET @h = -1;
SELECT
(@h := @h + 1) AS HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @h) AS COUNT
FROM ANIMAL_OUTS
WHERE @h < 23;
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME FROM ANIMAL_INS I JOIN ANIMAL_OUTS O USING(ANIMAL_ID) WHERE I.SEX_UPON_INTAKE <> O.SEX_UPON_OUTCOME ORDER BY ANIMAL_ID;
SELECT DISTINCT CART_ID FROM (SELECT * FROM CART_PRODUCTS WHERE NAME = '우유') A JOIN (SELECT * FROM CART_PRODUCTS WHERE NAME = '요거트') B USING(CART_ID) ORDER BY CART_ID;
만약)
SELECT DISTINCT CART_ID FROM CART_PRODUCTS L JOIN CART_PRODUCTS R USING(CART_ID) WHERE L.NAME = '우유' AND R.NAME = '요거트' ... 이렇게 구현하면 정답은 맞지만 전체를 통째로 조인한 후 WHERE 절로 걸러내기 때문에 비효율적인 SQL 코드이다. 따라서 WHERE 절로 먼저 걸러낸 테이블을 조인하는 것이 효율적이다.
SET @h = -1;
SELECT
(@h := @h +1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @h) as COUNT
FROM ANIMAL_OUTS
WHERE @h < 23;
MySQL 변수할당 : SET @변수명 = 값;
할당한 변수명에 1씩 더하기 : (@변수명 := @변수명 + 1)