mysql - MySQL 5.6 中的内联查询
问题描述
有人可以告诉我如何在 MySQL 5.6 中使用内联查询吗?我正在尝试做一件简单的事情!我正在尝试编写一个查询,在该查询中我从数据库中的一个表中选择并加入一个我试图动态创建的内联表。这是一个 1 列表,我无法用多行创建它。
示例内联查询
select * from (
(select 'filename1' as file_name) as t1
union
(select 'filename2' as file_name) as t2
);
如果我在没有第二个 select 语句的情况下运行此查询,那么它可以工作。但是,如果我使用两个 select 语句运行它并尝试将它们联合起来,它就会崩溃并抱怨我在“as t2”附近的 SQL 语法中有错误。
任何帮助是极大的赞赏。
解决方案
显然是一个非常简单的例子,但是......查询的成员union
不使用别名。但是,您正在创建的派生表union
确实需要一个。所以:
select * from (
select 'filename1' as file_name
union all
select 'filename2'
) t;
注意:
无需
union
用括号将成员括起来(除非您想要单独的order by
子句)无需为第二个成员中的列设置别名:无论如何,第一个查询中定义的别名优先
除非您确实想删除重复项,否则请使用
union all
而不是union
:它更有效,并且使意图明确
最后:就您的查询而言,不需要外部查询。这是等价的:
select 'filename1' as file_name
union all
select 'filename2'
奖励:在最新版本的 MySQL 中,您可以使用values row()
构造函数:
select *
from (values row('filename1'), row('filename2')) t(filename)
推荐阅读
- ios - Cordova IOS webview 界面随机无响应
- javascript - 如何将一组独特的对象组合成一个对象?
- reactjs - 无法在 React-Redux 组件的 Jest/Enzyme 测试中获取节点
- jsp - 来自 jsp 的 Windows 10 Tomcat 日志记录
- javascript - Javascript 浏览器缩放对象
- javascript - Spring boot,WebSocket不向指定用户发送通知
- sql - 两个varchars之间的比较
- c# - RevenueCat Unity,错误:EntryPointNotFoundException:_RCSetupPurchases
- javascript - 在 React.js 中使用 Async/Await 并返回状态
- ionic3 - ionic 3检查ngfor循环中的数组中是否存在值