[英]How to reuse a table in MySQL Workbench?
我阅读了类似问题的解决方案,但是在我看来,它似乎不起作用,我尝试过:
WITH tmp AS
( (things below is just an **example** to show that it will return a table)
SELECT
*clounmname* FROM *tablename*
WHERE *XXXX*
)
SELECT *columnname* FROM tmp;
但是我的mysql工作台说一开始就使用了WITH。 在WITH之前,但仍然无法正常工作。
所以我尝试了:
SELECT *columnname* FROM
( (things below is just an **example** to show that it will return a table)
SELECT
*clounmname* FROM *tablename*
WHERE *XXXX*
);
它运行没有错误,但没有返回任何内容。.所以我不知道该怎么办,mysql工作台有问题吗?
(对于Ubuntu 14.04,Mysql worbench的版本号是6.2)(上面的查询只是一个例子,我知道AND和其他东西。)
我什至尝试:
CREATE TABLE temp
SELECT *columnname* FROM
( (things below is just an **example** to show that it will return a table)
SELECT
*clounmname* FROM *tablename*
WHERE *XXXX*
);
SELECT *columnname* FROM temp;
但是没有任何错误返回
MySQL目前不支持WITH
关键字。 公用表表达式在MySQL中尚不可用。
解决方案是使用临时表或派生表或内联视图。
您使用的查询称为Common table Expression (CTE)
。 到目前为止, MySQL
不存在对CTE的支持。 另一种解决方案是使用Temporary table
或inline view
。
因此,您发布的CTE查询可以使用inline view
进行如下修改。 从内部查询返回的结果集将被视为临时结果集/视图。
select * from
(
SELECT *clounmname*
FROM *tablename*
WHERE *XXXX*
) tab
如果内部查询的结果将被多次使用,请考虑将其拉到临时表中,然后使用该临时表,如下所示
create temporary table mytab (*clounmname* datatype);
insert into mytab
SELECT *clounmname*
FROM *tablename*
WHERE *XXXX*;
select * from mytab;
确保datatype
的临时表和列的datatype
在选择列表中列的是一样的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.