2014-10-08 73 views
0

我有以下查询如何确保SQL查询中的字段是唯一的?

SELECT nature_images.image_code, 
      nature_objects.name 
    FROM nature_images 
    LEFT JOIN nature_objects 
     ON nature_images.object_id = nature_objects.id 
     AND nature_images.approved = 1 
    ORDER BY RAND() 
    LIMIT 0,5 

结果返回重复nature_object.ids,但不同的nature_objects.id,我基本上需要的是,nature_object.id返回每一行中唯一的,没有得到重复。 我尝试使用SELECT DISTINCT,但似乎失败..有无论如何要做到这一点?

+1

究竟你是如何产生这个'对象2'?这不是mysql会吐出来的东西,除非你以某种方式在db中存储了确切的文本。 – 2014-10-08 21:54:16

+0

@MarcB不,我没有这样存储,或者SQL以这种方式返回它,我只是解释结果的性质,这个查询可能会返回两个不同的自然图像,我不想要的同一个对象。 – Ali 2014-10-08 21:56:27

+0

使用group by并获取最大代码 – radar 2014-10-08 21:57:54

回答

2

您可以对对象名称执行GROUP BY并获取最大代码或最小代码。

SELECT MAX(nature_images.image_code), 
     nature_objects.name 
FROM nature_images 
LEFT JOIN nature_objects 
    ON nature_images.object_id = nature_objects.id 
    AND nature_images.approved = 1 
GROUP BY nature_objects.name 
ORDER BY RAND() 
LIMIT 0,5 
相关问题