【问题标题】:SQL: line 5:5: Column 'c' is ambiguousSQL:第 5:5 行:“c”列不明确
【发布时间】:2021-09-22 14:03:16
【问题描述】:

我在 hiveql 中写了这样的代码。

SELECT
    ttt1.rid,
    a,
    s,
    ttt2.num
FROM
    (
        (
            SELECT
                rid,
                r ['a'] AS a,
                r ['s'] AS s
            FROM
                l
            WHERE
                dt BETWEEN '20210914'
                AND '20210917'
                AND r ['act'] = 3
                AND r ['pos'] = 1
                AND r ['s'] = 50011
                AND r ['c'] = 'anti'
        ) ttt1
        JOIN (
            SELECT
                r ['a'] AS a,
                r ['s'] AS s,
                count(1) AS num
            FROM
                l
            WHERE
                dt BETWEEN '20210914'
                AND '20210917'
                AND r ['act'] = 3
                AND r ['pos'] = 1
                AND r ['s'] = 50011
                AND r ['c'] = 'anti'
            GROUP BY
                r ['s'],
                r ['a']
        ) ttt2 ON (
            ttt1.a = ttt2.a
            AND ttt1.s = ttt2.s
        )
    )

我想知道为什么它会出现模棱两可的错误。

第 5:5 行:“c”列不明确

CUZ as 是这两个表的join 键,它可以忽略<COLUMN_NAME> 之前的<TABLE_NAME>
谁能给我一些解释?
提前致谢。

【问题讨论】:

    标签: sql join hiveql


    【解决方案1】:

    我认为问题出在最终选择中,您尚未指定要从哪些表中选择 a 和 s

    SELECT
        ttt1.rid,
        a, --change this to ttt1.a
        s, --change this to ttt1.s 
        ttt2.num
    

    【讨论】:

    • 但我认为它是一个inner join,那么为什么必须使用<TALBE_NAME>.<COLUMN_NAME>ttt1.a 而不仅仅是使用<COLUMN_NAME>a 这样我就可以忽略<TABLE_NAME>? CUZ 我记得在一些语法限制<TABLE_NAME> 部分可以忽略?
    猜你喜欢
    • 2020-02-02
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多