사용자 도구

사이트 도구


database:mysql:functions

MySQL Functions

마지막 Insert ID

  • LAST_INSERT_ID() : 마지막 생성된 ID를 SELECT할 수 있다.
    SELECT LAST_INSERT_ID();
  • 이 함수는 기본적으로 insert 문을 실행하여 AUTO_INCREMENT 컬럼의 값이 변경되면 그 값을 리턴해주는 역할을 한다.
  • 만약 AUTO_INCREMENT 컬럼에 0null이외의 값을 명시적으로 넣으면 last_insert_id()는 변경되지 않는다. 따라서 AUTO_INCREMENT PK에 값을 직접 넣을 때는 last_insert_id()를 믿어서는 안된다.
    -- 아래와 같은 형태로 하면 0, null 이외의 PK 값에 대해서도 last_insert_id()를 믿을 수 있게 된다.
    INSERT INTO some_table (primary_key) VALUES(last_insert_id(직접지정_PK값));
    SELECT last_insert_id(); --> '직접지정_PK값' 을 리턴한다.
  • 단일 insert 문에서 여러 row를 insert하면, 첫번째 insert에서 생성된 PK로 값이 설정된다.
    INSERT INTO t VALUES (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');
    SELECT last_insert_id(); --> 'Mary' 가 속한 row의 PK가 리턴된다.
  • last_insert_id(expr) 형태로 사용하여 expr을 지정하면 이 함수 자체는 expr을 리턴하고, 또한 그 다음 SELECT last_insert_id()에서 리턴할 값도 expr로 설정한다.

조건적 count

count 함수는 null이면 세지 않고 null 이외의 값이면 1씩 더하는 특징이 있다. if 문과 조합하여 조건적 count를 할 수 있다.

SELECT name, COUNT(1) AS total, COUNT(IF(age < 20, 1, NULL)) AS YOUNG FROM users
GROUP BY name
database/mysql/functions.txt · 마지막으로 수정됨: 2015/11/15 18:36 저자 kwon37xi