2011-07-12 28 views
5

tôi biết một tuyên bố rằng tôi có thể phát hành để tìm hiểu các bảng với các cột Tôi đang tìm kiếm:Oracle SQL làm thế nào để tìm ra bảng có hai cột sau đây?

SELECT DISTINCT(table_name) 
    FROM all_tab_cols 
WHERE column_name = 'EMP_ID'; 

Tuy nhiên, làm thế nào tôi nên sửa đổi này để tôi có thể tìm thấy những bảng mà cả hai đã nói EMP_IDEMP_NAME?

Trả lời

11

Sử dụng:

SELECT table_name 
    FROM all_tab_cols 
    WHERE column_name IN ('EMP_ID', 'EMP_NAME') 
GROUP BY table_name 
    HAVING COUNT(DISTINCT column_name) = 2 

Việc so sánh số phải bằng số lượng các thông số quy định tại các khoản IN.

... nhưng đây là một phương tiện an toàn để xác định bảng trong trường hợp của họ là bản sao:

SELECT table_name 
    FROM all_tab_cols 
    WHERE column_name IN ('EMP_ID', 'EMP_NAME') 
GROUP BY table_name, owner 
    HAVING COUNT(column_name) = 2 
+0

cảm ơn bạn Ngựa Non. –

+1

trong điều kiện này, bạn cũng phải có điều kiện 'chủ sở hữu' ... nếu không, chúng tôi sẽ đưa ra một số lỗi ... –

+1

trong tất cả các dự án lớn bạn phải làm việc trong các lược đồ khác nhau và đó là lý do tại sao tôi yêu cầu bạn đặt điều kiện chủ sở hữu tại đây cũng .... không sao nói trong một bảng test_1 lược đồ có một tên cột EMP_ID nhưng không có EMP_NAME và trong lược đồ khác nó chỉ có EMP_NAME .... chỉ cần nghĩ về điều này cũng .. truy vấn này sẽ cung cấp cho test_1 cũng .. :) –

Các vấn đề liên quan