gpt4 book ai didi

sql - 从查询返回列名的表中选择特定列的数据

转载 作者:行者123 更新时间:2023-12-01 01:25:41 26 4
gpt4 key购买 nike

我写了 2 个单独的查询

1)


SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME =
(SELECT DISTINCT UT.TABLE_NAME
FROM USER_TABLES UT
WHERE UT.TABLE_NAME = 'MY_TABLE')
AND COLUMN_NAME NOT IN ('AVOID_COLUMN')

2)


SELECT *
FROM MY_TABLE MT
WHERE MT.COL1 = '1'

第一个查询返回除我想避免的列之外的所有列的名称。第二个返回表中所有列的数据。有没有什么方法可以合并这些查询,以便从第一个查询返回的第二个查询中只选择那些列的数据?

提前致谢

最佳答案

你必须为此使用动态 SQL(顺便说一句,我摆脱了 USER_TABLES 查询的子选择 - 这是不必要的):

var  cur refcursor
/
declare
v_stmt varchar2(4000);
begin
v_stmt := 'SELECT ';
for cur in (
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME =
'MY_TABLE'
AND COLUMN_NAME NOT IN ('AVOID_COLUMN')
)
loop
v_stmt := v_stmt || cur.column_name || ',';
end loop;
-- get rid of trailing ','
v_stmt := regexp_replace(v_stmt, ',$', '');

v_stmt := v_stmt || ' from my_table MT WHERE MT.COL1 = ''1''';
dbms_output.put_line(v_stmt);
open :cur for v_stmt;
end;

关于sql - 从查询返回列名的表中选择特定列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11242953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com