【发布时间】:2012-06-28 08:35:40
【问题描述】:
抱歉,标题有点令人困惑,我一直在努力寻找问题的答案,部分原因是很难在标题行中简明扼要地描述它或想出一个好的搜索字符串。 Anyhoooo,这是我面临的问题:
问题的简短版本是: 如何在 Oracle 理解的有效 SQL 中编写以下(无效但可以理解的 SQL):
select B.REPLACER as COL, A.* except A.COL from A join B on a.COL = B.COL;
这是长版(如果你已经从短版中知道我想要什么,你就不需要读这个了:P):
我的(简化的)任务是提供对表数据进行处理并将其作为子查询提供的服务。该表有很多列(几十个或更多),我坚持使用“select *”而不是一一明确列出所有列,因为没有我可以在表中添加或删除新列知道,尽管我的下游系统会知道并做出相应的调整。
比方说,这张表(以后我们称它为表A)有一个名为“COL”的列,我们需要将那个COL中的值替换为表B的REPLACER列中的值,其中两个COL值匹配。
我该怎么做?我无法重命名该列,因为下游系统需要“COL”;我不能没有“expect A.COL”部分,因为这会导致 sql 不明确。
感谢您的帮助,全能的 StackOverflow
雷
【问题讨论】:
-
讨论了替换列stackoverflow.com/questions/729197/… 不幸的是我怀疑你的答案是否定的。
-
@pd40 不错的链接,我认为临时表方法是最好的方法,不优雅,但有效。