假设我有一张表A,有10个字段。和表 B,有 5 个字段。 B 通过名为“key”的列链接到 A,该列同时存在于 A 和 B 中,名称相同(“key”)。
我正在生成一条通用的 SQL,它从主表 A 查询,并接收要连接到的表名参数,然后选择所有 A 字段 + B。
在这种情况下,我将获得我想要的所有 15 个字段,或更准确地说 - 16 个,因为我两次获得“ key ”,一次来自 A,一次来自 B。
我想要的是仅获取 15 个字段(主表中的所有字段 + 通用表中存在的字段),而无需获取“key”两次。 当然,我可以在 SELECT 本身中显式显示我想要的字段,但这阻碍了我构建通用 SQL 的目标。
最佳答案
这实际上取决于您针对哪个 RDBMS 使用它,以及您如何组装动态 SQL。例如,如果您使用的是 Oracle,并且它是一个将 SQL 组合在一起的 PL/SQL 过程,您可能正在查询 USER_TAB_COLS 或类似的东西。在这种情况下,您可以获得最终的列名列表,例如
SELECT DISTINCT(column_name)
FROM user_tab_cols
WHERE table_name IN ('tableA', 'tableB');
但基本上,我们需要更多地了解您如何构建动态 SQL。
关于sql - 如何在不获取重复列名的情况下选择 SQL 连接中的所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732145/