MySQL 5.6中的内联查询
有人能告诉我如何在MySQL 5.6中使用内联查询吗 我正在尝试做一件简单的事情!我正在尝试编写一个查询,在该查询中,我从数据库中的一个表中进行选择,并与我正在尝试动态创建的内联表进行连接。 这是一个单列表,我在创建多行表时遇到问题 内联查询示例MySQL 5.6中的内联查询,mysql,sql,select,subquery,union,Mysql,Sql,Select,Subquery,Union,有人能告诉我如何在MySQL 5.6中使用内联查询吗 我正在尝试做一件简单的事情!我正在尝试编写一个查询,在该查询中,我从数据库中的一个表中进行选择,并与我正在尝试动态创建的内联表进行连接。 这是一个单列表,我在创建多行表时遇到问题 内联查询示例 select * from ( (select 'filename1' as file_name) as t1 union (select 'filename2' as file_name) as t2 ); 如果
select * from (
(select 'filename1' as file_name) as t1
union
(select 'filename2' as file_name) as t2
);
如果我在不使用第二条select语句的情况下运行此查询,那么它会工作。
但如果我用这两个select语句运行它,并尝试将它们合并,它就会崩溃,并抱怨我在“as t2”附近的SQL语法中有错误
非常感谢您的帮助。显然这是一个过于简化的示例,但是。。。
联合
查询的成员不使用别名。不过,您使用联合创建的派生表确实需要一个。因此:
select * from (
select 'filename1' as file_name
union all
select 'filename2'
) t;
请注意:
- 无需用括号括住
联合
成员(除非您需要单个order by
子句)
- 无需为第二个成员中的列添加别名:但仍以第一个查询中定义的别名为准
- 除非您确实希望删除重复项,否则请使用
union all
而不是union
:这样更有效,并且使意图更明确
最后:就您的查询而言,不需要外部查询。这相当于:
select 'filename1' as file_name
union all
select 'filename2'
好处:在MySQL的最新版本中,您可以使用values行()
构造函数:
select *
from (values row('filename1'), row('filename2')) t(filename)
显然是一个过于简化的例子,但是。。。联合
查询的成员不使用别名。不过,您使用联合创建的派生表确实需要一个。因此:
select * from (
select 'filename1' as file_name
union all
select 'filename2'
) t;
请注意:
- 无需用括号括住
联合
成员(除非您需要单个order by
子句)
- 无需为第二个成员中的列添加别名:但仍以第一个查询中定义的别名为准
- 除非您确实希望删除重复项,否则请使用
union all
而不是union
:这样更有效,并且使意图更明确
最后:就您的查询而言,不需要外部查询。这相当于:
select 'filename1' as file_name
union all
select 'filename2'
好处:在MySQL的最新版本中,您可以使用values行()
构造函数:
select *
from (values row('filename1'), row('filename2')) t(filename)
天啊。非常感谢你,伙计。它起作用了!我尝试在没有别名的情况下使用内部select语句,但将语句保留在括号中,并不断出现错误,指出每个子查询都必须有自己的别名。我不认为mariadb与row()构造具有奇偶性,并使用表别名命名列,但至少可以在第二行之后使用值,如OMG。非常感谢你,伙计。它起作用了!我尝试在没有别名的情况下使用内部select语句,但将语句保留在括号中,并不断出现错误,指出每个子查询都必须有自己的别名。我不认为mariadb与row()构造具有奇偶性,并使用表别名命名列,但至少可以在第二行之后使用值,如