[mysql] SELECT로 삽입

select를 사용하여 삽입하는 쿼리가 있습니다.

INSERT INTO courses (name, location, gid) 
            SELECT name, location, gid 
              FROM courses 
             WHERE cid = $cid

삽입물에 대해 “이름, 위치”만 선택하고 쿼리에서 gid를 다른 것으로 설정할 수 있습니까?



답변

그렇습니다.하지만 구문을 확인하십시오.

INSERT INTO courses (name, location, gid)
SELECT name, location, 1
FROM   courses
WHERE  cid = 2

gid물론 1뿐만 아니라 그 위치 와 동일한 유형의 상수를 넣을 수 있습니다 . 그리고 저는 그 cid가치를 구성했습니다.


답변

그렇습니다. 당신은 쓸 수 있습니다 :

INSERT INTO courses (name, location, gid) 
SELECT name, location, 'whatever you want' 
FROM courses 
WHERE cid = $ci

또는 select의 다른 조인에서 값을 얻을 수 있습니다 …


답변

올바른 구문 : 맞춤법 선택이 잘못되었습니다

INSERT INTO courses (name, location, gid)
SELECT name, location, 'whatever you want'
FROM courses
WHERE cid = $ci 


답변

물론, gid에 무엇을 사용 하시겠습니까? 정적 값, PHP var, …

정적 값 1234는 다음과 같습니다.

INSERT INTO courses (name, location, gid)
SELECT name, location, 1234
FROM courses
WHERE cid = $cid


답변

INSERT 문이 잘못되었다고 생각합니다. 올바른 구문을 참조하십시오 : http://dev.mysql.com/doc/refman/5.1/en/insert.html

편집 : 앤드류가 이미 지적했듯이 …


답변

물론 당신은 할 수.

: 한 가지 그러나 주목해야한다 INSERT INTO SELECT다른 테이블에 문을 복사 한 테이블에서 데이터를 삽입하여 AND 필요 소스 및 목표 테이블 경기에서 데이터 형식을. 주어진 테이블 컬럼의 데이터 유형이 일치하지 않는 경우 (예 : 삽입하는 시도 VARCHARINT, 또는 TINYINTINTMySQL 서버가 발생합니다) SQL Error (1366).

그러니 조심해.

명령 구문은 다음과 같습니다.

INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;

참고 : 에서 캐스트 를 사용하여 다른 열 유형 삽입 문제를 피할 수있는 방법이 있습니다 SELECT.

SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;

이 변환 (의 CAST()동의어 CONVERT())은 테이블에 동일한 테이블 열에 다른 문자 집합이있는 경우 매우 유용합니다 (올바로 처리하지 않으면 데이터가 손실 될 수 있음).


답변

쿼리에 적합한 구문은 다음과 같습니다.

INSERT INTO courses (name, location, gid)
SELECT (name, location, gid)
FROM courses
WHERE cid = $cid