繁体   English   中英

如何在MySQL Workbench中重用表?

[英]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 tableinline 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM