字段列表中的列'order_date'不明确

问题描述 投票:0回答:2

我想让客户保留队列。我有customerId和order_date列。我正在使用自我联接,但显示一些错误。

自连接

SELECT 
   p1.customerId AS id,
   MONTH(order_date) as month,
   YEAR(order_date) as year 
FROM
    jugnoo AS p1
        LEFT JOIN
    jugnoo AS p2 ON p1.id = p2.id
WHERE
    p2.id IN (SELECT DISTINCT
                 (customerId) AS id
              FROM
                  jugnoo
              WHERE
                    MONTH(order_date) = 06
                AND YEAR(order_date) = 2017
              order by year(order_date), month(order_date))
order by 3, 2;

符合条件但其显示错误消息“字段列表中的列'order_date'是不明确的0.00072秒”的期望的客户ID”

sql join self-join
2个回答
0
投票

您只需要将order_date更改为一个不明确的列,这意味着您可以在两个表中找到此列,只是具体从哪个表开始,在这种情况下,您需要此列为p1,因此您使用p1.order_date


0
投票

在输出列部分中,您引用的是两个联接表中都存在的'order_date'列(它是自联接,但是SQL引擎无法“猜测”您要指代它们中的哪一个。]

在输出部分中,前缀“ p1”。或“ p2”。到order_name,具体取决于您要从哪个连接部件输出信息。

我假设它将是p1,但...


0
投票

不需要JOIN。只需使用p1.id列即可。

SELECT 
   p1.customerId AS id,
   MONTH(order_date) as month,
   YEAR(order_date) as year 
FROM
    jugnoo AS p1
WHERE
    p1.id IN (SELECT DISTINCT
                  customerId AS id
              FROM
                  jugnoo
              WHERE
                    MONTH(order_date) = 06
                AND YEAR(order_date) = 2017
              order by year(order_date), month(order_date))
order by 3, 2;
© www.soinside.com 2019 - 2024. All rights reserved.