创建一个视图,其中值显示为变量

时间:2016-05-18 10:57:17

标签: mysql view

我认为我需要使用select;

中的值进行扩展
select 
`mc_cf7dbplugin_submits`.`submit_time` AS `submit_time`,
`mc_cf7dbplugin_submits`.`form_name` AS `form_name`,
`mc_cf7dbplugin_submits`.`field_name` AS `field_name`,
`mc_cf7dbplugin_submits`.`field_value` AS `field_value`,
`mc_cf7dbplugin_submits`.`field_order` AS `field_order`,
`mc_cf7dbplugin_submits`.`file` AS `file`,`mc_cf7dbplugin_submits`.`processed` AS `processed` 
from `mc_cf7dbplugin_submits` 
where isnull(`mc_cf7dbplugin_submits`.`processed`)

如果'field_name'等于'File',我需要显示的变量'file_name'应该是'field_value'的内容

这可能吗?如果可以,我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以在字段列表中使用IF():

select 
   `mc_cf7dbplugin_submits`.`submit_time` AS `submit_time`,
   `mc_cf7dbplugin_submits`.`form_name` AS `form_name`,
   `mc_cf7dbplugin_submits`.`field_name` AS `field_name`,
   `mc_cf7dbplugin_submits`.`field_value` AS `field_value`,
   `mc_cf7dbplugin_submits`.`field_order` AS `field_order`,
   `mc_cf7dbplugin_submits`.`file` AS `file`,
   `mc_cf7dbplugin_submits`.`processed` AS `processed`,
   IF(`mc_cf7dbplugin_submits`.`field_name`='File', `mc_cf7dbplugin_submits`.`field_value`, NULL) AS `file_name`
from `mc_cf7dbplugin_submits` 
where isnull(`mc_cf7dbplugin_submits`.`processed`)

答案 1 :(得分:0)

您可以使用CASE语句来获得预期结果。 WHERE子句中还有一个问题,条件应该是columnname IS NULL

SELECT
`mc_cf7dbplugin_submits`.`submit_time` AS `submit_time`,
`mc_cf7dbplugin_submits`.`form_name` AS `form_name`,
`mc_cf7dbplugin_submits`.`field_name` AS `field_name`,
`mc_cf7dbplugin_submits`.`field_value` AS `field_value`,
`mc_cf7dbplugin_submits`.`field_order` AS `field_order`,
`mc_cf7dbplugin_submits`.`file` AS `file`, 
`mc_cf7dbplugin_submits`.`processed` AS `processed`
CASE WHEN `mc_cf7dbplugin_submits`.`field_name` = 'File' THEN `mc_cf7dbplugin_submits`.`field_value`
     ELSE '' 
     END AS `file_name`
FROM `mc_cf7dbplugin_submits` 
WHERE `mc_cf7dbplugin_submits`.`processed` IS NULL