2012-03-04 19 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你不一定會得到相應的行?)