gpt4 book ai didi

sql - 在不使用别名的情况下,如何从内部查询中识别连接的列?

转载 作者:行者123 更新时间:2023-12-04 14:50:24 25 4
gpt4 key购买 nike

由于一些动态 SQL 复杂性,我需要将两个表连接在一起并从结果中查询,就好像它是单个表一样。扭曲的是我必须SELECT *在内部查询上——我不能为列设置别名。然后似乎无法识别外部查询中的那些列。

以这些表为例

CREATE TABLE test_tab1 (join_key NUMBER, tab1_uqcol VARCHAR2(30));
CREATE TABLE test_tab2 (join_key NUMBER, tab2_uqcol VARCHAR2(30));
INSERT INTO test_tab1 VALUES (1, 'table 1 only');
INSERT INTO test_tab2 VALUES (1, 'table 2 only');

我可以很容易地过滤他们独特的列
SELECT *
FROM (
SELECT *
FROM test_tab1 t1
INNER JOIN test_tab2 t2
ON t1.join_key = t2.join_key
) joined
WHERE tab1_uqcol LIKE 'table%';

但是如果我尝试引用他们有共同点的专栏...
SELECT *
FROM (
SELECT *
FROM test_tab1 t1
INNER JOIN test_tab2 t2
ON t1.join_key = t2.join_key
) joined
WHERE join_key = 1;

然后它告诉我 join_key是无效标识符。同上 t1.join_key , test_tab1.join_key , "t1.JOIN_KEY" , "T1.JOIN_KEY" , 和 "TEST_TAB1.JOIN_KEY" .如何识别这些星级选择的列?

最佳答案

您不需要使用别名,但您确实需要更明确地命名派生表中的列。例如...

    SELECT *
FROM (
SELECT t1.join_key, t1.tab1_uqcol, t2.tab2_uqcol
FROM test_tab1 t1
INNER JOIN test_tab2 t2
ON t1.join_key = t2.join_key
) joined
WHERE join_key = 1;

由于您使用的是内部联接,因此无需区分两个不同的 join_key 列。您只需要在内部查询中列出其中之一,这样外部查询就不会混淆。

关于sql - 在不使用别名的情况下,如何从内部查询中识别连接的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31078106/

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