2016-01-08 4 views
0

У меня есть таблица вроде этого:Как создать отдельную строку из полей в одной строке?

// mytable 
+----+--------+--------+ 
| id | col1 | col2 | 
+----+--------+--------+ 
| 1 | one | two | 
| 2 | three | four | 
| 3 | five | six | 
+----+--------+--------+ 

Теперь я хочу эту таблицу:

// newmytable 
+----+-------+---------+ 
| id | col | related | 
+----+-------+---------+ 
| 1 | one | 1  | 
| 2 | two | 1  | 
| 3 | three | 2  | 
| 4 | four | 2  | 
| 5 | five | 3  | 
| 6 | six | 3  | 
+----+-------+---------+ 

я могу сделать это без этого related колонки, как это:

CREATE TABLE newmytable (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    SELECT col1 AS col FROM mytable 
     UNION ALL 
    SELECT col2 AS col FROM mytable 
) 

Но теперь я хочу знать, как я могу сделать это с этим related колонка?

+0

Какое значение вы хранения в 'related' колонке? –

+0

@SameerMirji Тождественное число для полей в одинаковой строке. – Shafizadeh

ответ

1

Вы можете использовать id заполнить related колонку, как это:

CREATE TABLE newmytable (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY) 
    SELECT col, related FROM (
      SELECT col1 AS col, id as related, 0 sort FROM mytable 
       UNION ALL 
      SELECT col2 AS col, id as related, 1 sort FROM mytable 
    ) x 
     ORDER BY x.related,x.sort ASC 

Demo

+0

извините, трудно сказать, просто просмотрев код. Можете ли вы попробовать создать рабочий образец в sqlFiddle? Что-то вроде http://sqlfiddle.com/#!9/95dff –

+0

что-то вроде этого: http://sqlfiddle.com/#!9/3ac414/2 – Shafizadeh

+0

не сделал этого способа создания таблицы, но выглядит как ваша проблема. решить сейчас, разве? –