防止mysql查询给出多行相同的id

时间:2015-10-09 09:29:19

标签: mysql sql join duplicates

首先,由于数据量巨大,因此创建一个SQL小提问题有点复杂。通过这个我尝试删除我的结果截图。

问题似乎很小,我的查询运行得很好但是因为不同的图像被链接到同一城市(或距离范围内的城市)的不同位置,所以此时我回到了同一图像的两倍或更多。因为此查询正在' city' niveau,我只需要取回一个图像,因为我需要结果中的第一个(假设是最接近我的lan / lon的那个)。

查询:

SELECT c.slug
    ,l.location_id
    ,fl.flyer_id
    ,f.salt
    ,f.NAME
    ,f.online
    ,f.cover
    ,fc.cat_id
    ,ca.NAME AS cat_name
    ,lan
    ,lon
    ,(6371 * acos(cos(radians(1.5000759112888)) * cos(radians(lan)) * cos(radians(lon) - radians(2.6118285879120)) + sin(radians(1.5000759112888)) * sin(radians(lan)))) AS distance
FROM cities c
INNER JOIN locations l
    ON c.slug = l.city_slug
INNER JOIN flyers_locations fl
    ON l.location_id = fl.location_id
INNER JOIN flyers_categories fc
    ON fl.flyer_id = fc.flyer_id
INNER JOIN categories ca
    ON fc.cat_id = ca.id
INNER JOIN flyers f
    ON fl.flyer_id = f.id
HAVING distance < 25
    AND l.location_id != ''
    AND fc.cat_id = '41'
    AND f.online = '1'
ORDER BY distance ASC 
LIMIT 100

结果

enter image description here

enter image description here

非常感谢

1 个答案:

答案 0 :(得分:1)

如果您不希望图片显示两次,可以尝试在列名称前面使用distinct

但是,如果你真的只想获取第一个为什么不只是将限制设置为1?这样你就只能得到第一行(最近的)。