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