MySQL rand()忽略重复

时间:2012-09-07 23:44:12

标签: mysql sql random distinct

我一直在尝试使用以下MySQL:

  SELECT distinct(photos.id)
       , photos.file
       , photos.tags
       , photos.desc
       , photos.ratio
       , tags.bid
       , tags.tagname_id 
    FROM photos
       , tags 
   WHERE photos.trending=1 
     AND tags.pid=photos.id
ORDER BY RAND() 
   LIMIT 10

我尝试使用DISTINCT来防止重复输入,但在我的情况下它似乎不起作用。

让这个工作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

 SELECT photos.id
   , photos.file
   , photos.tags
   , photos.desc
   , photos.ratio
   , tags.bid
   , tags.tagname_id 
FROM photos
   , tags 
WHERE photos.trending=1 
 AND tags.pid=photos.id
GROUP BY photos.id
ORDER BY RAND() 
LIMIT 10

这是进行查询的正确方法,但它会随意从photos.id中选择一行,因此您可能会在不同的实例上得到不同的结果。

MS SQL有效查询,请查看sqlfiddle

select photos.col1,max(photos.col2),max(photos.col3),max(tags.col5),max(tags.col6)
from photos,tags
where photos.col1=tags.col4
group by col1

SQL指令是:当按列使用group时,不能包含在select中,除非它按OR分组,它在聚合函数中使用。