我试图选择所有具有OWNERID或L1ID或L1列的表,但没有任何以下列,HID,DHID,SPHID,SPHID,LINKHID,NODEID和SITEID。用于从表中选择特定列的SQL查询优化
以下是我的SQL查询。这需要很长时间。你能给我一个更好的解决方案或优化这个查询。
SELECT
TABLE_NAME
FROM
USER_TABLES
WHERE
TABLE_NAME NOT IN (
SELECT TABLE_NAME
FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME IN('HID', 'DHID', 'SPHID', 'LINKID', 'NODEID', 'SITEID')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 1)
AND TABLE_NAME IN (
SELECT TABLE_NAME
FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME IN ('OWNERID', 'L1ID', 'L1')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 1)
请不要将其标记为重复。我已经尝试过其他的解决方案,他们似乎没有锻炼对我来说
是,只有OWNERID或L1ID或L1中的一个将在表中。它们都是一样的,但在不同的表中有不同的名称。同样适用于HID,DHID,... SITEID – schuma 2014-08-29 21:05:29
我得到这个错误ORA-00904:“USER_TAB_COLUMNS”。“TABLE_NAME”:无效标识符 00904. 00000 - “%s:无效标识符” – schuma 2014-08-29 21:11:55
例如:如果table1有L1和OWNERID,table2只有L1。我拒绝table1并接受table2 – schuma 2014-08-29 21:13:51