[英]Querying The Database for Join Tables
好的,我在這里有一個查詢。 (使用 Oracle SQL Developer)
SELECT OWNER, TABLE_NAME FROM ALL_TAB_COLUMNS, COLUMN_NAME WHERE COLUMN_NAME = 'ID1' OR COLUMN_NAME = 'ID2';
這使我的數據庫中的每個表都有ID1
列或ID2
列。 假設我有許多連接表, ID1
和ID2
連接在特定表中,但ID1
和ID2
也位於許多單獨的表中。
我將如何設置此查詢以選擇其中包含COLUMN_NAME
的不同TABLE_NAME
? IE,查詢ID1
和ID2
返回一個JOIN_TABLE1
,但ID1
和ID3
只返回JOIN_TABLE2
,我沒有得到只有一個或另一個的共享表。
您可以使用相交
SELECT OWNER, TABLE_NAME
FROM ALL_TAB_COLUMNS, COLUMN_NAME
WHERE COLUMN_NAME = 'ID1'
INTERSECT
SELECT OWNER, TABLE_NAME
FROM ALL_TAB_COLUMNS, COLUMN_NAME
WHERE COLUMN_NAME = 'ID2';
最常見的方法是聚合您的行和計數,因此您只需訪問該表一次:
select owner, table_name
from all_tab_columns
where column_name in ('id1', 'id2');
group by owner, table_name
having count(*) = 2;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.