簡體   English   中英

防止mysql查詢提供相同ID的多行

[英]Prevent mysql query from giving multiple rows of same id

首先,創建一個帶有問題的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

結果

在此處輸入圖片說明

在此處輸入圖片說明

非常感謝

如果您不希望圖像出現兩次,可以嘗試在列名前面使用distinct

但是,如果您真的只想獲取第一個,為什么不將限制設置為1? 這樣,您只會得到第一(最接近)行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM