簡體   English   中英

oracle sql列別名

[英]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中實現這一點。

Oracle SQL Developer可以做到這一點。

編寫您的*查詢,將鼠標置於“ *”上

在此處輸入圖片說明

SQL Developer提供了將其展開到完全限定的列列表的方法,單擊藍色文本。

-

在此處輸入圖片說明

不要忘記您的WHERE子句或ANSI加入FROM中,否則您的DBA會向您解釋什么是笛卡爾積。

如果您的表具有外鍵,SQLDev也可以生成該外鍵。

您可以執行以下操作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM