如何从SQL查询多个表中的特定列名

时间:2018-05-17 03:54:02

标签: sql oracle

我想查询多个表中的column_name = object_no(最多100个表)。我正在使用Oracle SQL Developer。

要显示没有column_name = object_no的表,我尝试使用下面的SQL查询。

QMAKE_CFLAGS -= -O2

但是,它会多次显示同一个表格,并与同时包含componentDidMount

的表格混在一起

3 个答案:

答案 0 :(得分:1)

由于user_tab_columns在每行中都有table_namecolumn_name,因此您的选择仅省略包含该列的行,而不包含该表中其他列的其他行。

您可以使用的一个查询是:

SELECT DISTINCT table_name
FROM user_tab_columns c
WHERE NOT EXISTS (
    SELECT 1
    FROM user_tab_columns
    WHERE column_name LIKE '%OBJECT_NO%'
        AND table_name = c.table_name
) 
ORDER BY table_name;

其他方式可行:

SELECT DISTINCT table_name
FROM user_tab_columns 
WHERE table_name NOT IN (
    SELECT table_name
    FROM user_tab_columns
    WHERE column_name LIKE '%OBJECT_NO%'
) 
ORDER BY table_name;

答案 1 :(得分:1)

试试这个:

SELECT 
    DISTINCT TABLE_NAME 
FROM 
    USER_TAB_COLUMNS
WHERE 
    TABLE_NAME NOT IN 
    (
        SELECT 
            TABLE_NAME
        FROM 
             USER_TAB_COLUMNS
        WHERE COLUMN_NAME LIKE '%OBJECT_NO%'
     )

答案 2 :(得分:0)

试试这个 -

SET SERVEROUT ON;

BEGIN

FOR R IN (SELECT 'SELECT '||A.COLUMN_NAME||' FROM '||A.TABLE_NAME||' ' AS QRY FROM USER_TAB_COLUMNS A
WHERE COLUMN_NAME = 'OBJECT_NO')
LOOP
    EXECUTE IMMEDIATE USING R.QRY;
END LOOP;
/