在MySQL中,是否有可能在NATURAL JOIN中重命名表的属性,如下所示:
select * FROM AAA NATURAL JOIN BBB AS NEW_NAME(ATTR_ONE, ATTR_TWO);
根据数据库系统基础 - Ramez Elmasri,DBMS应该允许它,但我发现在MySQL上没办法做到这一点
答案 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中的实际字段名称。
实际上,我开始觉得这本书的主张很可疑;它假定一个列顺序(虽然可能存在于实践中)不能被假定为比行顺序更强。