在NATURAL JOIN上重命名属性

时间:2016-06-23 20:15:05

标签: mysql

在MySQL中,是否有可能在NATURAL JOIN中重命名表的属性,如下所示:

select * FROM AAA NATURAL JOIN BBB AS NEW_NAME(ATTR_ONE, ATTR_TWO);

根据数据库系统基础 - Ramez Elmasri,DBMS应该允许它,但我发现在MySQL上没办法做到这一点

1 个答案:

答案 0 :(得分:1)

我已经在MySQL工作了十多年,而且我从未见过它;如果它支持这样的功能,我相当肯定会在官方文档中提及here

事实上,我不确定我是否记得即使在关系代数中也读过这样的特征,尽管我的正式训练确实在十年前结束了。

这样的操作怎么会起作用;是否应该在AAA中替换AAA.ATTR_ONE以获取缺少的AAA.ATTR_TWO?或者它应该为结果字段别名?或其他什么?

相当确定唯一的替代方案是

SELECT * 
FROM AAA 
NATURAL JOIN (
   SELECT field0 AS ATTR_ONE, field1 AS ATTR_TWO FROM BBB
) AS NEW_NAME

其中field0和field1应替换为BBB中的实际字段名称。

实际上,我开始觉得这本书的主张很可疑;它假定一个列顺序(虽然可能存在于实践中)不能被假定为比行顺序更强。