为有点令人困惑的标题道歉,我一直在努力寻找我的问题的答案,部分原因是很难在标题行中简洁地描述它或想出一个好的搜索字符串。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 中的值替换为两个 COL 值匹配的表 B 的 REPLACER 列中的值。
我该怎么做呢?我无法重命名该列,因为下游系统需要“COL”;我不能没有“expect A.COL”部分,因为这会导致 sql 模棱两可。
感谢您的帮助,全能的 StackOverflow
射线