2012-03-04 47 views
0

我有一些表还原用户文章。表结构调查像...php myaql与不同的用户ID联合查询

id | uid | imgae | 
1 | 1 | 1.jpg | 
2 | 1 |  | 
3 | 2 | 2.jpg | 
4 | 3 | 3.jpg | 
5 | 3 |  | 
6 | 3 | 4.jpg | 
7 | 4 |  | 
... 

那我要得到10结果女巫image!=''

(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 
UNION 
(select * from my_table where image!='' order by rand() limit 1) 

以及如何进一步查询。 10个不同的结果uida.uid!=b.uid)?代码太长...任何简单的方法?谢谢。

回答

1

变化的限制,包括一组由:

select * from my_table where image!='' order by rand() group by uid limit 10 
1

你为什么不这样做:

SELECT * FROM my_table 
WHERE image != '' 
ORDER BY RAND() 
LIMIT 10 

如果你只是想在DISTINCT uid你可以这样做:

SELECT DISTINCT uid, id, image FROM my_table 
WHERE image != '' 
ORDER BY RAND() 
LIMIT 10 

(MySQL人刷新我的记忆 - 当你选择DISTINCT uid时,MySQL会选择cor响应身份证,图像行,还是更像GROUP BY你不一定会得到相应的行?)