동일한 테이블의 한 열에서 다른 열로 값 복사


168

한 열에서 다른 열로 복사 값을 만들려면 어떻게해야합니까? 나는 가지고있다:

Database name: list
number | test
123456 | somedata
123486 | somedata1
232344 | 34

가지고 싶다:

Database name: list
number | test
123456 | 123456
123486 | 123486
232344 | 232344

어떤 mysql 쿼리가 있어야합니까?

답변:


362

해당 코드에 대한 짧은 대답은 다음과 같습니다.

UPDATE `table` SET test=number

다음 table은 테이블 이름이며 키워드이스케이프하는 MySQL 규칙이므로이 경우 중괄호 (일명 백틱)로 둘러 싸여 있습니다 ( TABLE이 경우 키워드).

이것은 매우 위험한 쿼리 test이므로 테이블의 모든 행 에서 열의 모든 항목을 지우고 number(값에 관계없이)

WHERE절 을 사용 하여 쿼리를 특정 행 집합으로 만 제한 하는 것이 더 일반적 입니다.

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10

22
개발자가 평신도처럼 생각한 드문 경우 중 하나입니다.
Zaxter

9
WHERE 절이 update command없으면 ...에 익숙하지 않은 경우이 명령은 테이블의 모든 레코드를 처리합니다. update
gmo

너무 간단합니다! 감사합니다! 와!
JimboSlice

1
@gmo가 경고 한 것처럼 많은 데이터를 지우는 심각한 잠재력. 먼저 데이터베이스 백업을 만든 다음 WHERE 절을 사용하여 쿼리를 실행하여 한 줄로 제한하십시오. 결과에 만족하면 WHERE 절을 제거하십시오.
blogo

대박. 그것에 대해 생각하지 않았다. 감사.
Onkar Musale

28
UPDATE `table_name` SET `test` = `number`

프로세스에서 수학적 변경을 수행하거나 MySQL 함수를 사용하여 값을 수정할 수도 있습니다.



8

BEWARE : 업데이트 열 순서가 중요합니다

GOOD : 내가 원하는 것은 기존 Status of Status를 PrevStatus에 저장합니다.

UPDATE Collections SET  PrevStatus=Status, Status=44 WHERE ID=1487496;

BAD : Status & PrevStatus는 모두 44로 끝납니다.

UPDATE Collections SET  Status=44, PrevStatus=Status WHERE ID=1487496;

그래도 Status = 44를 설정하는 이유는 무엇입니까?
Sceletia

@sceletia는 문제를 보여주기위한 임의의 값
zzapper

6

다음을 시도하십시오 :

UPDATE `list` SET `test` = `number` 

"숫자"에서 모든 값의 사본을 작성하고 "테스트"에 붙여 넣기


3

다음은 나를 위해 일했다 ..

  1. 쿼리 편집기 응용 프로그램에서 안전 모드를 사용하고 있지 않은지 확인하십시오. 그렇다면 비활성화하십시오!
  2. 그런 다음 sql 명령을 실행하십시오.

'test_update_cmd', 소스 값 열 col2, 대상 값 열 col1 및 조건 열 col3과 같은 테이블의 경우 :-

UPDATE  test_update_cmd SET col1=col2 WHERE col3='value';

행운을 빕니다!


-7

당신은 또한 절차와 함께 할 수 있습니다 그래서 나는 이것에 대한 절차를 가지고

 DELIMITER $$
 CREATE PROCEDURE copyTo()
       BEGIN
               DECLARE x  INT;
            DECLARE str varchar(45);
              SET x = 1;
            set str = '';
              WHILE x < 5 DO
                set  str = (select source_col from emp where id=x);
            update emp set target_col =str where id=x;      
            SET  x = x + 1;
                END WHILE;

       END$$
   DELIMITER ;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.