错误代码:1054。'on clause' 中的未知列 'r.when_added'
Error Code: 1054. Unknown column 'r.when_added' in 'on clause'
这里好像有什么问题?
错误代码:1054。'on clause'
中的未知列 'r.when_added'
SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
(select count(*)
FROM redeemed_coupons r2 JOIN
coupon c2
ON r2.coupon_id = c2.coupon_id AND
c2.who_added = 1 AND
r2.when_added BETWEEN 1602827745 AND 1613084678 AND
r2.when_added = r.when_added
)
FROM redeemed_coupons r JOIN
coupon c
ON r.coupon_id = c.coupon_id AND
c.who_added = 1 AND
r.when_added BETWEEN 1602827745 AND 1613084678
ORDER BY r.when_added ;
感谢您的帮助!
查看您的查询,我怀疑您在子查询中是否真的需要 join
。这不是你想要的吗?
SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
(
SELECT COUNT(*)
FROM redeemed_coupons r2
WHERE r2.coupon_id = c.coupon_id AND r2.when_added = r.when_added
) cnt
FROM redeemed_coupons r
INNER JOIN coupon c ON c.coupon_id = r.coupon_id
WHERE r.when_added BETWEEN 1602827745 AND 1613084678 AND c.who_added = 1
ORDER BY r.when_added ;
除了suqbuery的变化外,我还re-organized对外部查询的条件进行了一些修改;这不会改变结果,但我发现只将相关条件放在 ON
子句中,将其他条件放在 WHERE
子句中更具可读性。
你也可以用 window count()
来表达,如果你是 运行 MySQL 8.0:
SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
COUNT(*) OVER(PARTITION BY r.coupon_id, r.when_added) cnt
FROM redeemed_coupons r
INNER JOIN coupon c
ON r.coupon_id = c.coupon_id
AND c.who_added = 1
AND r.when_added BETWEEN 1602827745 AND 1613084678
ORDER BY r.when_added ;
这里好像有什么问题?
错误代码:1054。'on clause'
中的未知列 'r.when_added' SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
(select count(*)
FROM redeemed_coupons r2 JOIN
coupon c2
ON r2.coupon_id = c2.coupon_id AND
c2.who_added = 1 AND
r2.when_added BETWEEN 1602827745 AND 1613084678 AND
r2.when_added = r.when_added
)
FROM redeemed_coupons r JOIN
coupon c
ON r.coupon_id = c.coupon_id AND
c.who_added = 1 AND
r.when_added BETWEEN 1602827745 AND 1613084678
ORDER BY r.when_added ;
感谢您的帮助!
查看您的查询,我怀疑您在子查询中是否真的需要 join
。这不是你想要的吗?
SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
(
SELECT COUNT(*)
FROM redeemed_coupons r2
WHERE r2.coupon_id = c.coupon_id AND r2.when_added = r.when_added
) cnt
FROM redeemed_coupons r
INNER JOIN coupon c ON c.coupon_id = r.coupon_id
WHERE r.when_added BETWEEN 1602827745 AND 1613084678 AND c.who_added = 1
ORDER BY r.when_added ;
除了suqbuery的变化外,我还re-organized对外部查询的条件进行了一些修改;这不会改变结果,但我发现只将相关条件放在 ON
子句中,将其他条件放在 WHERE
子句中更具可读性。
你也可以用 window count()
来表达,如果你是 运行 MySQL 8.0:
SELECT r.coupon_id, c.who_added, c.coupon_name, r.when_added,
COUNT(*) OVER(PARTITION BY r.coupon_id, r.when_added) cnt
FROM redeemed_coupons r
INNER JOIN coupon c
ON r.coupon_id = c.coupon_id
AND c.who_added = 1
AND r.when_added BETWEEN 1602827745 AND 1613084678
ORDER BY r.when_added ;