블로그 이미지
No pain, no gain!
lepoussin

Tag

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • total
  • today
  • yesterday
11-22 14:42
2009. 5. 13. 00:54 Database/MySQL
MySQL에서 나름대로 많은 작업을 해왔지만 MS SQL에서 사용하던 FULL OUTER JOIN이 안된다는 것을 오늘에서야 알았다. 당황스러웠지만 침착하게(?) FULL OUTER JOIN 기능을 사용할 수 있는 방법에 관해서 트릭을 찾아보면서 고민을 좀 하였다.

그러는 중 내가 선택한 방법은 {LEFT | LIGHT} OUTER JOIN과 UNION의 조합이다. UNION을 이용할 때 두 질의의 결과값들이 중복되어 있을 경우, 이는 하나로 표시된다. 다음의 예제를 통해서 살펴보도록 하자.

test1과 test2 테이블을 만들고 다음과 같이 데이터를 넣어보자.

[test1] 테이블
name   age
-------------------
lin        22
sean    111

[test2] 테이블
name   age
-------------------
sean     28
ted        1

다음 질의를 실행하면 [test_result] 테이블이 자동으로 생성되고 그 결과가 들어가 있는 것을 확인할 수 있다.
SELECT t1.name as name, IFNULL(t1.age, 0) AS age1, IFNULL(t2.age, 0) AS age2
INTO test_result
FROM test1 t1
          LEFT OUTER JOIN test2 t2 ON t1.name = t2.name
UNION
SELECT t2.name, IFNULL(t1.age, 0), IFNULL(t2.age, 0)
FROM test1 t1
          RIGHT OUTER JOIN test2 t2 ON t1.name = t2.name

[test_result] 테이블
name   age1   age2
------------------------------
lin        22       0
sean    111      28
ted       0        1
posted by lepoussin
2009. 5. 13. 00:09 Database/MySQL
MS SQL에서 사용하는 ISNULL()은 MySQL에서 동작하지 않는다. MySQL에는 IFNULL()이라는 함수로 존재한다.

IFNULL(expr1, expr2)

expr1이 NULL이 아니면, IFNULL()은 expr1을 반환한다. 그것이 아니면(expr1이 NULL이면) expr2를 반환한다. 반환값으로 숫자, 문자열이 가능하다.

mysql> SELECT IFNULL(1,0);
            -> 1
mysql> SELECT IFNULL(NULL,10);
            -> 10
mysql> SELECT IFNULL(1/0,10);
            -> 10
mysql> SELECT IFNULL(1/0,'yes');
            -> 'yes'
posted by lepoussin
2007. 2. 6. 20:06 Database/MySQL

select * into outfile '[파일명]' (fields terminated by '[구분문자]') from [테이블명];

posted by lepoussin