MySQL视图不能包含子查询,也不能保持顺序。如何从此查询创建视图?

时间:2011-06-28 21:32:24

标签: mysql view subquery

我实际上是在尝试使用每个员工的当前标题获取结果集。我想创建一个视图供以后使用,但我发现我很难过,可能错过了一个简单的解决方案。这是有问题的查询,并提前感谢!

select * from 
(SELECT
appointment.employee_id,
title.`name` as title_name
FROM
appointment
INNER JOIN appointment_title ON appointment.id = appointment_title.appointment_id
INNER JOIN title ON appointment_title.title_id = title.id
order by appointment_title.effective_date DESC) tmp group by employee_id

2 个答案:

答案 0 :(得分:0)

更新:

SELECT
    appointment.employee_id ,
    ( SELECT title.`name`
      FROM appointment_title
        INNER JOIN title
          ON appointment_title.title_id = title.id
      WHERE appointment.id = appointment_title.appointment_id
      ORDER BY appointment_title.effective_date DESC
      LIMIT 1
    ) AS title_name
FROM appointment
GROUP BY appointment.employee_id

答案 1 :(得分:0)

另一种选择是将查询分解为两个视图。第一个视图将包含派生表子查询,第二个视图将只选择该子查询:

CREATE VIEW vwEmployee_Inner AS
SELECT
appointment.employee_id,
title.`name` as title_name
FROM
appointment
INNER JOIN appointment_title ON appointment.id = appointment_title.appointment_id
INNER JOIN title ON appointment_title.title_id = title.id
order by appointment_title.effective_date DESC

然后您的原始视图变为:

CREATE VIEW vwEmployee AS
SELECT * FROM vwEmployee_Inner GROUP BY employee_id