我的 INNER JOIN 子查询的 where 子句遇到问题。我收到未知的列错误M.idMembre
。我尝试使用表名而不是别名,但遇到了同样的问题。我还尝试从子查询中删除 WHERE 子句,并在子查询后的 ON 子句中添加此条件。但是,无论如何我都遇到同样的问题。我觉得我在这里缺少一些明显的东西。
SELECT DISTINCT M.`idMembre` , `couponsTypes`.`maxCouponType`
FROM membres AS `M`
INNER JOIN (
SELECT idMembre, MAX( coupons.`idType` ) AS `maxCouponType`
FROM coupons
WHERE coupons.`idMembre` = M.`idMembre`
GROUP BY idMembre
) AS `couponsTypes`
ON M.`idMembre` = couponsTypes.`idMembre`
ORDER BY maxCouponType DESC
如果您需要更多信息,请与我们联系。
不允许在连接子句的子查询中引用外表。解决这个问题的一种方法是执行group by
在基于连接条件的子查询中:
SELECT DISTINCT M.`idMembre`, `couponsTypes`.`maxCouponType`
FROM membres AS `M`
INNER JOIN
(SELECT idMembre, MAX(coupons.`idType`) AS `maxCouponType`
FROM coupons
GROUP BY idmembre
) `couponsTypes`
ON couponstypes.idMembre = M.idMember
ORDER BY maxCouponType DESC
但是,你不需要membres
表根本。虽然在外文中提到select
,相当于优惠券类型表中的会员id。因此,您可以将查询编写为:
SELECT idMembre, MAX(coupons.`idType`) AS `maxCouponType`
FROM coupons
GROUP BY idmembre
ORDER BY 2 DESC
这可能是最简单、最有效的表述方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)