如何在mysql中创建视图

时间:2015-03-17 21:02:18

标签: mysql view subquery

SQL看起来像这样:

select * 
  from A 
 where A.id in (select id 
                  from B 
                 where b.date>'2015-01-01') 
 group by a.id;

b.data>'2015-01-01'是一种动态条件。

2 个答案:

答案 0 :(得分:0)

您无法在视图中使用子查询,但您可以加入表格以获得所需内容:

create view my_view as
select A.*
from A
    inner join B on A.id = B.id
where B.date > '2015-01-01'
group by A.id;

答案 1 :(得分:0)

我认为您只能使用此解决方法:

  1. 创建一个代表动态值的函数:

    create function param() returns date deterministic no sql return @param;
    
  2. 创建视图:

    create or replace view myView as (
      select * 
        from A 
       where A.id in (select id 
                        from B 
                       where b.date>param()) 
       group by a.id);
    
  3. 选择值

    select v.* 
      from (select @param:=str_to_date('01-1-2015','%d-%m-%Y') p) param , myView v;
    
  4. p.s。 :我修正了一个小错字;删除了一个分号。 Here你有一个例子。