source

데이터베이스 필드를 1씩 늘립니다.

lovecheck 2022. 11. 8. 21:11
반응형

데이터베이스 필드를 1씩 늘립니다.

MySQL을 사용하는 경우 로그인 등의 필드가 있는 경우 sql 명령 내에서 해당 필드를 1씩 업데이트하려면 어떻게 해야 합니까?

INSERT 쿼리를 만들고 firstName, lastName 및 logins를 작성하려고 합니다.그러나 firstName과 lastName의 조합이 이미 존재하는 경우 로그인을 1씩 늘립니다.

테이블이 이렇게 생겼을 수도 있는데

firstName----|----lastName----|----logins

John               Jones             1
Steve              Smith             3

실행 시 새 사용자(즉, 새 사용자)를 삽입할 명령어를 찾고 있습니다.Tom Rogers) 또는 John Jones가 사용된 이름일 경우 로그인을 증가시킵니다.

항목 업데이트:

간단한 증분이 효과가 있을 것이다.

UPDATE mytable 
  SET logins = logins + 1 
  WHERE id = 12

새 행을 삽입하거나 이미 있는 경우 업데이트:

기존 행을 업데이트하거나 기존 행이 없는 경우 삽입하려면 구문 또는 옵션을 사용할 수 있습니다(Rob Van Dam이 답변에서 설명한 대로).

새 항목 삽입:

또는 다음과 같은 것을 찾고 있을 수도 있습니다.기본적으로 다음과 같은 쿼리를 실행할 수 있습니다.특정 요구에 따라서는 조금 더 복잡할 수 있습니다.

INSERT into mytable (logins) 
  SELECT max(logins) + 1 
  FROM mytable

(firstName, lastName) Primary 키를 안전하게 만들거나 적어도 UNIQURE 키를 둘 수 있는 경우는, 다음과 같이 할 수 있습니다.

INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)
ON DUPLICATE KEY UPDATE logins = logins + 1;

그렇게 할 수 없다면 우선 그 프라이머리 키가 무엇이든 가져와야 하기 때문에 한 번의 쿼리로 원하는 것을 얻을 수 없을 것입니다.

이것은, 상기의 몇개의 회답에 대한 각주에 가깝습니다.이러한 회답은ON DUPLICATE KEY UPDATE레플리케이션의 안전성이 반드시 높은 것은 아니기 때문에, 1대의 서버를 넘어 확장할 예정이라면, 이것을 회피하고, 2대의 쿼리를 사용해 존재를 검증하고, 그 다음에 2대의 쿼리를 사용해 어느쪽인가를 실행하는 것에 주의해 주세요. UPDATE행이 존재하는 경우 또는INSERT그렇지 않을 때.

무슨 말을 하고 싶은지는 말하지 않았지만 상대편 답변에 대한 댓글로 충분히 잘 암시해 주셨어요.아마 자동 증가 컬럼을 찾고 계실 겁니다.

create table logins (userid int auto_increment primary key, 
  username varchar(30), password varchar(30));

삽입 시 특별한 코드가 필요하지 않습니다.그저.

insert into logins (username, password) values ('user','pass');

MySQL API에는 클라이언트 코드에서 이 문을 실행할 때 어떤 userid가 생성되었는지 알려주는 기능이 있습니다.

MySQL에 대한 전문가는 아니지만 삽입하기 전에 트리거를 살펴봐야 합니다.트리거에서 원래 테이블에서 선택 쿼리를 실행할 수 있으며, 검색된 항목이 있으면 새 값을 삽입하는 대신 행 '로그인'을 업데이트하십시오.그러나 이 모든 것은 실행 중인 MySQL 버전에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/2762851/increment-a-database-field-by-1

반응형