Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle lấy tên bảng dựa trên giá trị cột

Truy vấn này có thể được thực hiện trong một bước bằng cách sử dụng XMLTABLE (không dùng nữa).

Lược đồ mẫu

--Table-1 and Table-2 match the criteria.
--Table-3 has the right column but not the right value.
--Table-4 does not have the right column.
create table "Table-1" as select '1234' employee_id from dual;
create table "Table-2" as select '1234' employee_id from dual;
create table "Table-3" as select '4321' employee_id from dual;
create table "Table-4" as select 1          id from dual;

Truy vấn

--All tables with the column EMPLOYEE_ID, and the number of rows where EMPLOYEE_ID = '1234'.
select table_name, total
from
(
    --Get XML results of dynamic query on relevant tables and columns.
    select
        dbms_xmlgen.getXMLType(
            (
                --Create a SELECT statement on each table, UNION ALL'ed together.
                select listagg(
                    'select '''||table_name||''' table_name, count(*) total
                     from "'||table_name||'" where employee_id = ''1234'''
                    ,' union all'||chr(10)) within group (order by table_name) v_sql
                from user_tab_columns
                where column_name = 'EMPLOYEE_ID'
            )
        ) xml
    from dual
) x
cross join
--Convert the XML data to relational.
xmltable('/ROWSET/ROW'
    passing x.xml
    columns
        table_name varchar2(128) path 'TABLE_NAME',
        total      number        path 'TOTAL'
);

Kết quả

TABLE_NAME   TOTAL
----------   -----
Table-1      1
Table-2      1
Table-3      0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm NEXT_DAY () trong Oracle

  2. Oracle Database12c ORA 01918 và lỗi kết nối

  3. LISTAGG phân biệt nằm trong một truy vấn con trong danh sách CHỌN

  4. Python Oracle DB Connect không có Oracle Client

  5. Trong một truy vấn SQL, truy vấn có thể sử dụng bao nhiêu chỉ mục từ một bảng?