PDOException:SQLSTATE [23000]:违反完整性约束:1052 IN/ALL/ANY 子查询中的列 'category_id' 不明确

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'category_id' in IN/ALL/ANY subquery is ambiguous

在 select 语句中得到了 select,但我不确定为什么结果不明确!

我的 (php) 函数:

function FunctionName($EventId) {

    $database = new Connection();
    $database = $database->Connect();
    $statement = $database->prepare(" SELECT C.*
        FROM event_categories AS C
        LEFT JOIN event_in_categories as EC
        ON C.category_id = EC.category_id
        LEFT JOIN events AS E
        ON EC.EventId = E.EventId
        WHERE category_id IN

        (
            SELECT EC.category_id FROM event_in_categories
            WHERE EventId = :EventId
        )

        AND category_active = 1 ");

        $statement->execute(array("EventId" => $EventId));
        $Categories = $statement->fetchall(PDO::FETCH_ASSOC);

        if (!empty($Categories)) {
            foreach ($Categories as $Category) {
                $CategoryArray[] = new EventCategory(null, $Category);
            }
            return $CategoryArray;
        }

    }

我在第二个 select 中指定了哪个 ID,但仍然出现错误。 (我研究了一下,发现 PHP MySQL - Column 'id' in IN/ALL/ANY subquery is ambiguous 修改了我的第二个 select 所以它指定了要读取的 ID 和相同的错误)

如有任何帮助,我们将不胜感激:D

您必须添加您的 ID 所在列的别名:

请更改:

WHERE category_id IN

WHERE C.category_id IN

在子查询中

SELECT category_id FROM event_in_categories