2015-02-06 23 views
1

不確定如何執行此操作,但在一個查詢中是否可以從表中獲取x個記錄,如果找不到足夠的記錄,只是隨機選擇重複。從MySQL獲取x筆記錄並在重複數據不足的情況下獲取

我有一個照片表,假設它有5個記錄在裏面,我想拉出10條記錄,並將它們順序隨機,所以我有這樣的:

SELECT * FROM TABLE 
ORDER BY RAND() 
LIMIT 10 

這只是拉了回來5隨機地,這就是我在桌上所有的。我可以告訴MySQL,嘿,如果你發現少於10個,只是隨機抓取更多,直到你達到那個數字?

任何幫助表示讚賞!

感謝

+0

你也許可以找到一個黑客要做到這一點,但它不是真的什麼SQL和DB是。如果您需要填寫10個項目,如果您的記錄少於10條,是否可以在應用程序中重複某些邏輯? – 2015-02-06 10:21:30

+0

是的,我確實可以這樣做,只是很好奇,如果這可能直接與MySQL,我會在我的應用程序,如果不是。 – keogh 2015-02-06 10:31:24

+0

我不會告訴你,這是不可能的,只是我沒有看到在MySQL中做任何事情。 – 2015-02-06 10:32:40

回答

0

這將做到這一點:

select * from Table1 
union all 
select * from 
(
    select * from 
    (
    select * from Table1 limit 10 
    union all 
    select * from Table1 limit 10 
    union all 
    select * from Table1 limit 10 
    union all 
    select * from Table1 limit 10 
    -- more unions... 
) t2 order by rand() 
) rand_ordered 
limit 10 

聯盟多次表爲您的需要的記錄數量爲(10倍在這個例子中),使其與只有一排工作在表格中,將rand()的結果排序,並將其附加到另一個union all的表格中。

這可能不是最好的解決方案,但它會做到這一點。

這裏舉例:SQLFIDDLE

相關問題