我想让客户保留队列。我有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”
您只需要将order_date更改为一个不明确的列,这意味着您可以在两个表中找到此列,只是具体从哪个表开始,在这种情况下,您需要此列为p1,因此您使用p1.order_date
在输出列部分中,您引用的是两个联接表中都存在的'order_date'列(它是自联接,但是SQL引擎无法“猜测”您要指代它们中的哪一个。]
在输出部分中,前缀“ p1”。或“ p2”。到order_name,具体取决于您要从哪个连接部件输出信息。
我假设它将是p1,但...
不需要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;