根据MYSQL表中列的值创建新列

时间:2017-02-12 21:22:30

标签: mysql sql

我有一个mysql表,它有一个requestID列。 requestId的类型为String。我有三种类型的requestID。我们来说bedtvfridge

  • 对于bed类型的请求,requestID中不会附加任何内容。例如abc123
  • 对于tvfridge类型的请求,requestId分别附加tvfridge。例如abc123.tvabc123.fridge

我需要创建一个新表格,其中包含所有列以及列requestType,其中包含条目bedtvfridge

输入

| ID | RequestId     |
| 1  | abc123        |  
| 2  | abc123.tv     |   
| 3  | abc123.fridge |  

输出

| ID | RequestId     |  RequestType |     
| 1  | abc123        |   bed        |
| 2  | abc123.tv     |   tv         |
| 3  | abc123.fridge |   fridge     |

1 个答案:

答案 0 :(得分:1)

您可以使用SUBSTRING_INDEX将requestType列作为字符串中.之后的字符。然后使用CREATE TABLE AS..SELECT..创建一个包含所有现有列和新计算列的新表。

create table newtable as 
select e.*,
case when substring_index(requestID,'.',-1)=requestID then 'bed'
else substring_index(requestID,'.',-1) end as requestType
from existing_table e