0
所以我有这个疑问:SQL - 查询返回重复的记录,即使GROUP BY
SELECT P.*,
(3959 * acos(cos(radians('37.785834'))
* cos(radians(CA.lat))
* cos(radians(CA.lng)
- radians('-122.406417'))
+ sin(radians('37.785834'))
* sin(radians(CA.lat)))) AS distance
FROM adp2_posts as P
JOIN adp2_offer_details C ON C.merchant_id = P.ID
JOIN adp2_addresses CA ON CA.address_id = C.address_id
WHERE P.post_type = 'merchant'
AND P.post_status = 'publish'
AND CA.mm = "dallasftworth"
AND C.cats RLIKE CONCAT("[[:<:]]", REPLACE(199, ",", "[[:>:]]|[[:<:]]"), "[[:>:]]")
GROUP BY CA.address_id, P.ID
HAVING (distance < 999999999999999999 AND P.coupon_count > 0) ORDER BY distance ASC LIMIT 0 , 20
我希望它从返回左表的独特价值,但它也返回重复。
结果:
我有点被这个困惑。
如果您按A,B分组,您会得到一行A,B的唯一组合 –
您在查询中有'SELECT P. *',表示列中的列数多于图像中的列数。这可能很容易表明在MySQL中对“GROUP BY”的误用/误解。请从您的查询中发布更完整的结果集,并查看您希望查看结果的示例。不要将它们作为图像发布,像表格一样将它们复制/粘贴到代码编辑器中,突出显示和'ctl-k'或使用'{}'按钮就像代码块一样。 –
有时候看到MySQL不会为这种查询抛出错误是非常令人沮丧的。 – Utsav