View里面的MySql子查询

时间:2017-08-24 15:00:19

标签: mysql subquery

我使用MySql子查询创建了一个视图,它在我的localhost上工作,  它在生产中失败,因为Mysql版本是5.6,它不支持视图上的子查询,所以我需要帮助重写整个查询,  我尝试使用UNION ALL,但它告诉我每个Select需要相同数量的列。

新查询:

CREATE VIEW vista_inventarionacional AS
  SELECT T.Ultima_Actualizacion,
   r.nombre AS Red,
   co.nombre AS Comuna,
   equipo.nombre AS Descripcion,
   equipo.marca AS Marca,
   equipo.modelo AS Modelo,
   p.nombre AS Parametro,
   equipo.nserie AS NumSerie,
   equipo.fecha_compra AS Fecha_Recepcion,
   equipo.id_mma AS MMA,
   equipo.fecha_inicio_uso AS FechaInstalacion,
   equipo.fecha_vigencia as FechaBaja,
   e.nombre AS LugarInstalacion,
   eq_etd.nombre AS EstadoEquipo
   FROM equipo
   LEFT JOIN equipo_estacion AS eq_est ON eq_est.equipo_id = equipo.id
   JOIN estacion AS e ON e.id = eq_est.estacion_id
   LEFT JOIN red AS r ON r.id = e.red_id
   LEFT JOIN comuna AS co ON co.id = e.comuna_id
   LEFT JOIN equipo_parametro AS eq_p ON eq_p.equipo_id = equipo.id
   JOIN parametro AS p ON p.id = eq_p.parametro_id
   LEFT JOIN equipo_estado AS eq_etd ON eq_etd.id = equipo.equipo_estado_id
   WHERE eq_est.estado = 'activo';
   UNION ALL
   SELECT equipo_id, MAX(fecha) AS Ultima_Actualizacion
   FROM transferencia GROUP BY equipo_id 

带子查询的旧查询:   Original

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的查询:

UNION ALL
   SELECT equipo_id, MAX(fecha) AS Ultima_Actualizacion
   FROM transferencia GROUP BY equipo_id   

不正确。因为在第一个查询中,您有14列,您尝试将所有列合并为2列。

您可以使用:

SELECT equipo_id, MAX(fecha), null,null,null,null,null,null,null,null,null,null,null,null, AS Ultima_Actualizacion
   FROM transferencia GROUP BY equipo_id;

View的select也包含一个子查询错误:你可以解决这个问题。使用mysql workbrench连接mysql DB。并从mysqlworkbrench运行创建视图脚本。 它会起作用。