首页 > 解决方案 > SQL:第 5:5 行:“c”列不明确

问题描述

我在 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”列不明确

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

标签: sqljoinhiveql

解决方案


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

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

推荐阅读