SELECT从单个数据库行

时间:2017-09-18 08:38:31

标签: mysql

我有一个包含idalias

列的数据库表
id    | alias
------|------------------
1     | green
2     | red maroon sunset
3     | blue navy

我需要获取单个标记的列表,即SELECT ... FROM color以这样的形式返回结果:

1 => green
2 => red
2 => maroon
2 => sunset
3 => blue
3 => navy

有没有办法直接在SQL中拆分/取消组合别名?在不改变数据库结构(和代码)的情况下,最好的方法是什么?

更新

不幸的是,这是一个无法轻易更改的系统,我们没有足够的资源来重写所有连接的系统/ API ......所以也许有人知道这种情况的良好/可行解决方案。

1 个答案:

答案 0 :(得分:1)

我有一个整数表(0-9)......

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,alias VARCHAR(100) NOT NULL
);

INSERT INTO my_table VALUES
(1,'green'),
(2,'red maroon sunset'),
(3,'blue navy');

SELECT DISTINCT x.id
              , SUBSTRING_INDEX(SUBSTRING_INDEX(x.alias,' ',i.i+1),' ',-1) alias 
           FROM my_table x
              , ints i -- my integers table
          ORDER 
             BY id
              , i;
+----+--------+
| id | alias  |
+----+--------+
|  1 | green  |
|  2 | red    |
|  2 | maroon |
|  2 | sunset |
|  3 | blue   |
|  3 | navy   |
+----+--------+