[英]oracle sql column alias
我有3个表A,B,c,我想加入这些表。 这些表具有公共列,例如id_no,order_no
我想编写一个查询,返回所有三个表的所有列,这些列的扩展名是tabA。,tabB。,tabC....。我不想手动指定所有列名。 这样,我可以区分表之间的公共列。
select tabA.id_no, tabA.order_no, tabA....., tabB.id_no, tabB.order_no,tabB..., tabC.id_no, tabC.order_no,tabC..
from A tabA, B tabB, C tabC
where tabA.id_no = tabB.id_no
and tabB.id_no = tabC.id_no
您能否让我知道如何在oracle sql中实现这一点。
您可以执行以下操作:
SELECT tabA.*, tabB.*, tabC.*
FROM a tabA INNER JOIN b tabB
ON tabA.id_no = tabB.id_no
INNER JOIN c tabC
ON tabB.id_no = tabC.id_no;
编辑
如果您只想获取与三个表关联的列的列表,并查看三个表中共有的列名,则可以尝试如下操作:
SELECT column_name, COUNT(*), LISTAGG(table_name, ',') WITHIN GROUP ( ORDER BY table_name
FROM all_tab_columns
WHERE owner = '<table_owner>'
AND table_name IN ('A','B','C')
GROUP BY column_name;
注意: LISTAGG()
假定您使用的是Oracle 11g或更高版本; 在此之前,您可以使用未记录的函数WM_CONCAT()
。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.