MySQL别名列通配符[重复]

Posted

技术标签:

【中文标题】MySQL别名列通配符[重复]【英文标题】:MySQL Alias Column Wildcards [duplicate] 【发布时间】:2014-11-04 08:59:45 【问题描述】:

我们寻找在 mysql SELECT 语句中使用通配符的可能性在列别名中

像这样:

对于每一列:

SELECT a.* as task_*, b.* as types_* 
FROM tasks AS a 
LEFT JOIN types AS b 
ON a.type_id = b.id_type 
ORDER BY a.lastmod DESC

不仅适用于显式列:

SELECT a.title as task_title, b.title as types_title 
FROM tasks AS a 
LEFT JOIN types AS b 
ON a.type_id = b.id_type 
ORDER BY a.lastmod DESC

但它不起作用,有什么想法吗?

注意:作为列名缩写的前缀

a.* as prefix_*

【问题讨论】:

您的要求并不完全清楚。你能举一个预期输入和输出的例子吗? 不,这是不可能的。您只能为单个列分配别名。 【参考方案1】:

SELECT a.* as task_ 完全错误。列别名用于单列而不是整个列列表。使用* 运算符,您可以从各自的表中选择所有列。您需要修改您的查询,如

SELECT a.*, b.*
FROM tasks AS a 
LEFT JOIN types AS b 
ON a.type_id = b.id_type 
ORDER BY a.lastmod DESC

(OR) 为选择列表中的每一列显式设置列别名。根据您的评论,a.* as prefix_(*) 无法完成,因为没有内置这种类型的构造。

【讨论】:

这不是我想要的! - *** 对我想要的第二个通配符 * 有一些问题:SELECT a.* as task_(*) 你的意思是a.* as prefix_*。不,这种类型的构造不存在,因此无法完成。【参考方案2】:

您必须明确选择每一列并为每一列分配别名

example: select a.emp_name as task_empame, a.location as task_location from ...

【讨论】:

可能是对 mysql dev 的功能请求 - 没有其他想法?

以上是关于MySQL别名列通配符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查询查找重复项并添加别名列

查询重复项和添加别名列的查询

Mysql查询字符串替换[重复]

MySQL必知必会读书笔记-2(去重,limit,结果的排序,通配符,正则表达式)

mysql用户管理

MYSQL 进阶语句