[MySQL] INSERT 할 때, 마지막 PK 값에서 1씩 증가시키는 방법

2023. 4. 27. 16:54·MySQL

서론

pk가 `auto_increment` 로 설정하지 않을 때 사용하는 방법입니다.

MySQL 서버에 변수를 저장하고, 저장한 변수를 재사용하는 방식으로 해결합니다.

 

대입 연산자와 함께 변수를 저장하는 방법은 `SET @{변수명} := {저장할 값}` 입니다.

예시 쿼리

SET @last_id := (SELECT MAX(id) FROM gsheet_interaction_table);
SELECT @last_id:=@last_id+1, S.ct_id, P.platform 플랫폼, S.t_id, T.monitoring_title 작품명, S.url,
    TRIM(S.rt) 영상길이, S.i_id
FROM monitoring_db.scraping_data_table S
JOIN platform_list P ON P.p_id=S.p_id
JOIN title_list T ON T.t_id=S.t_id
LEFT JOIN gsheet_interaction_table G ON S.ct_id = G.ct_id
WHERE S.c_id=6
    AND S.p_id NOT IN (8, 9, 10, 11, 12, 13)
    AND S.k_id != 0  /* 제보받은 키워드는 제외 */
    AND S.t_id IN (771, 772)
    AND S.i_id = 8
    AND CASE
            WHEN S.rt LIKE '%SHORTS' THEN '01:00'
            WHEN S.rt = 'LIVE' THEN '00:00'
            WHEN S.rt = '-' THEN '00:00'
            WHEN S.rt = ' 예정' THEN '00:00'
            ELSE CAST(S.rt as TIME)
        END >= '10:00'
    AND G.ct_id IS NULL;

설명

위의 예시 쿼리에서는 `SET @last_id := (SELECT MAX(id))` 로 pk 컬럼의 마지막 값(가장 큰 값이 마지막 레코드의 id 일 때)을 서버에 저장합니다.

이후 `SELECT 절` 에서 서버에 저장한 변수인 `@last_id`를 이용하는 쿼리입니다.

 

읽어주셔서 감사합니다.

'MySQL' 카테고리의 다른 글

MySQL 전문 검색(Full Text Search) 인덱스로 간단한 검색 엔진 구현하기  (1) 2024.12.31
[스터디] Real MySQL 8.0 1권 - 5장 트랜잭션과 잠금 정리  (1) 2024.09.23
[MySQL] AUTO_INCREMENT 초기화하는 방법  (2) 2023.04.27
[MySQL] 테이블 내 중복 데이터 삭제  (1) 2023.04.27
[MySQL] 프로세스 확인과 프로세스 죽이기  (2) 2022.09.30
'MySQL' 카테고리의 다른 글
  • MySQL 전문 검색(Full Text Search) 인덱스로 간단한 검색 엔진 구현하기
  • [스터디] Real MySQL 8.0 1권 - 5장 트랜잭션과 잠금 정리
  • [MySQL] AUTO_INCREMENT 초기화하는 방법
  • [MySQL] 테이블 내 중복 데이터 삭제
옐리yelly
옐리yelly
  • 옐리yelly
    개발 갤러리
    옐리yelly
  • 전체
    오늘
    어제
    • 모든 글 보기 (85)
      • Project (22)
      • Java (4)
      • Spring (8)
      • Kubernetes (6)
      • Docker (2)
      • JPA (3)
      • Querydsl (2)
      • MySQL (9)
      • ElasticSearch (7)
      • DevOps (4)
      • Message Broker (3)
      • Git & GitHub (2)
      • Svelte (1)
      • Python (8)
        • Python Distilled (4)
        • Anaconda (1)
        • Django (0)
        • pandas (3)
      • Algorithm (1)
      • Computer Science (0)
      • 내 생각 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Project
    Python
    커넥션 풀
    elasticsearch
    리팩토링
    blue-green 배포
    pymysql
    성능 테스트
    k8s
    gitops
    JPA
    ncloud
    OOP
    RabbitMQ
    querydsl
    Spring
    svelte
    Message Broker
    데드락
    devops
    mybatis
    nks
    argocd
    예약 시스템
    pandas
    프로젝트
    docker
    포텐데이
    MySQL
    비사이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
옐리yelly
[MySQL] INSERT 할 때, 마지막 PK 값에서 1씩 증가시키는 방법
상단으로

티스토리툴바