Mysql 是否可以创建一个表,然后在一个查询中从中进行选择?

Mysql 是否可以创建一个表,然后在一个查询中从中进行选择?,mysql,Mysql,我很好奇是否有一种方法可以在一张表上进行选择,而这张表本身就是选择的产物。类似于 select a,b,c from (select id as a, name as b, phone as c, date as d from some_table) where d = now(); 因此,实际上,括号将返回一个表,其列由as定义,然后外部select可以去查询该结果 如果不是这样的话,我很想知道我可以用什么模糊的类似方法 我之所以需要它,是因为我有一个相当广泛的pivot查询,

我很好奇是否有一种方法可以在一张表上进行选择,而这张表本身就是选择的产物。类似于

    select a,b,c from 
(select id as a, name as b, phone as c, date as d from some_table) 
where  d = now();
因此,实际上,括号将返回一个表,其列由as定义,然后外部select可以去查询该结果

如果不是这样的话,我很想知道我可以用什么模糊的类似方法


我之所以需要它,是因为我有一个相当广泛的pivot查询,可以在我的用户数据上运行,我希望能够从相当大的结果中进行选择

是的,这是可能的。试试这个:

select A.a,A.b,A.c from 
(select id as a, name as b, phone as c, date as d from some_table where  d = now()) A
它被称为派生表

要将位置移动到子查询之外,请执行以下操作:

select A.a,A.b,A.c, A.d from 
(select id as a, name as b, phone as c, date as d from some_table) A
where A.d = now()

您可能会遇到一个错误,即派生表之类的内容需要别名

以下工作:

select a,b,c 
from (
     select id as a, 
            name as b, 
            phone as c, 
            some_date as d 
     from some_table
) as t 
where  d <= now();
别名t定义了一个所谓的派生表


SQLFIDLE:

您尝试时发生了什么?嗯。。。这个*确切的语法是错误的,其他各种尝试都不起作用,所以,我想知道正确的方法是什么,或者它是否可能。定义错误。我所能看到的是d列是未知的,应该在括号内。在第一个查询中创建一个视图,然后从该视图中选择?对,所以。。。我需要d列对外部select可见,就像那里有一个实际的表名而不是select一样。这是我问题的关键。不,它被称为派生表。在查询的哪个部分创建表?这看起来很有希望。。。有没有办法将where out移动到外部select?我意识到*这个例子没有任何明显的理由这样做,但在我的现实世界查询中,我确实需要根据一些条件剔除结果。@Dr.Dredel我用派生表外的d更新了我的答案。