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 필요 소스 및 목표 테이블 경기에서 데이터 형식을. 주어진 테이블 컬럼의 데이터 유형이 일치하지 않는 경우 (예 : 삽입하는 시도 VARCHAR로 INT, 또는 TINYINT에 INTMySQL 서버가 발생합니다) 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
