Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何确保SQL查询中的字段是唯一的?_Php_Mysql_Sql_Select_Join - Fatal编程技术网

Php 如何确保SQL查询中的字段是唯一的?

Php 如何确保SQL查询中的字段是唯一的?,php,mysql,sql,select,join,Php,Mysql,Sql,Select,Join,我有以下疑问 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()

我有以下疑问

 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.id,但是使用不同的nature_objects.id,我基本上需要的是nature_object.id在返回的每一行中都是唯一的,不会重复。
我尝试使用SELECT DISTINCT,但似乎失败了。。还有其他方法吗?

您可以对对象名称进行
分组,得到最大代码或最小代码

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

您究竟是如何生成这个
对象2
?这不是mysql会吐出来的东西,除非你以某种方式将确切的文本存储在数据库中。@MarcB不,我不是这样存储的,或者SQL是那样返回的,我只是解释结果的性质,这个查询可能会为我不想要的同一个对象返回两个不同的自然图像。使用group by并获取max代码