2013-01-09 2 views
5

mySQL을 사용하여 한 테이블에서 다른 테이블로 항목을 옮기고 싶습니다. 이 작품MYSQL 다른 테이블의 값을 하나의 열에 삽입하십시오.

INSERT INTO items_rooms (item_id, room_id,x,y,n) 
SELECT id, room_id,x,y,z 
    FROM `items_phoenix` 

그러나 내가 대신 다른 컬럼의 각 값 중 하나 개를 컬럼에 여러 값을 삽입 걸려 :

내가 현재 사용하는 것입니다. items_phoenix가 items_rooms 한 컬럼에 배치되는 테이블로부터 items_rooms에서

, I 값 X와 Y를 원하는 예 :

.

x = 5 및 y = 2 인 경우 다음과 같이 items_rooms에 저장할 수 있습니까? 하나의 열 : 각 값에 대해 서로 다른 열 대신 5.2를 사용할 수 있습니까?

죄송합니다. 혼란스러운 경우 죄송합니다.

답변

12

SELECT column-list에서 표현식을 사용할 수 있습니다. 당신은 간단한 경우, 예를 들어에 대한 연결을 사용할 수 있습니다

INSERT INTO items_rooms (item_id, room_id, x_dot_y, n) 
SELECT id, room_id, CONCAT(x,'.',y), z 
    FROM `items_phoenix` 
+0

내가 필요한 것. 감사 !! – zuc0001

+1

이것은 MySQL이 지정된 유형을 신경 쓰지 않기 때문에 가능하며 이에 따라 변환됩니다. – tadman

0

:만큼 수와 데이터 유형에서 대상 테이블 일치의 선택 목록의 열 및 열, 당신은 이런 식으로 뭔가를 할 수 :

INSERT INTO items_rooms (
    item_id, 
    room_id, 
    x_and_y, 
    n) 
SELECT 
    id, 
    room_id, 
    CONCAT(x, '.', y), 
    z 
FROM `items_phoenix` 
+0

Microsoft SQL Server는 문자열 연결에'+'를 사용하지만 MySQL은 그렇지 않습니다. –

+0

MySQL 전문가가 아니기 때문에 원래 SQL Server 구문을 사용했습니다 (@ Zaffy, 나는 원래 편집에서 "+"를 사용했기 때문에 산술을 추가하지 않았습니다). 올바른 MySQL 구문을 반영하도록 편집되었습니다. –

0

예, 열이 텍스트 정보를 저장할 수있는 경우

그냥 CONCAT 또는 CONCAT_WS

INSERT INTO items_rooms (item_id, room_id, my_value, n) 
SELECT id, room_id, CONCAT_WS('.', x, y), z 
FROM `items_phoenix` 
,

SQL Fiddle DEMO

0

당신은 확실히 이 작업을 수행 할 수 있습니다. 이것에 대한 유용한 해답을보십시오. 그러나 이것이 좋은 생각인지 여부를 고려해야합니다. 별개의 열을 한 열에서 일종의 문자열 표현으로 비정규 화하면, 유지 관리하기 어렵고 쿼리하기가 어려운 무언가가 생겨납니다. 데이터를 자신에게 덜 유용하게 만듭니다.

+2

이것은 코멘트가되어야합니다 ... –

+0

@Joseph :이 말은하기가 어렵습니다. 나는 그것을 논평하는 것으로 생각했다. 그러나 그때 나는 SO의지도 및 멘토링 측면이이 경우에 중요한 문제라고 생각했다. – DWright

-2
$table_To_Get_From = mysql_query("SELECT * FROM items_phoenix (id, room_id,x,y,z)"); 
if($table_To_Get_From){ 
    $table = mysql_fetch_assoc($table_To_Get_From); 
    $values = array($table['id'],$table['room_id'],$table['x'],$table['y'],$table['z']); 
    mysql_query("INSERT INTO items_rooms (item_id, room_id,x,y,n) 
     VALUES ($values[0],$values[1],$values[2],$values[3],$value[4])"); 
} 

내가 그들을 문자열을하지 않았다, 그래서 당신은 당신이 원하는 원하는 값이있는 경우

이것은, 그것을 삽입합니다 '값은 [NUM] $'를 사용해야 할 수도 있습니다.

+0

그게 효과가있다. –

+3

OP가 PHP를 사용할 수 있음을 어떻게 알 수 있습니까? 델파이, C++ 등을 사용한다면 어떨까요? 질문은 MySQL에 관한 것입니다. –

관련 문제