2014-01-10 81 views
1

我創建了一個查詢來顯示我的包。Mysql隨機記錄的多個限制

它工作正常,但我的問題是獲得每個meta_value隨機產品。

爲此,我需要設置它的限制。

假設如果meta_value ='0'有10個產品,但我想顯示兩個隨機記錄。

如果meta_value ='2'我想從它顯示5個隨機記錄。

像這樣我想從sql中獲得。

我的查詢,

SELECT SQL_CALC_FOUND_ROWS DISTINCT * 
FROM wp_posts qp 
INNER JOIN wp_postmeta wpm ON (qp.ID = wpm.post_id) 
WHERE 1=1 AND (((qp.post_title LIKE '% %') OR (qp.post_content LIKE '% %'))) AND 
     qp.post_type = 'listing_type' AND qp.post_status IN ('publish', 'private') AND 
     wpm.meta_key = 'packageID' AND wpm.meta_value IN ('0', '1', '2', '3', '4') 
GROUP BY qp.ID 
ORDER BY wpm.meta_value ASC, qp.post_date DESC 
LIMIT 10 

回答

1

https://stackoverflow.com/a/5934739/212692, 你可以爲了得到隨機限制在查詢中使用隨機數生成合並準備好的聲明。

SET @a = (SELECT FLOOR(1 + RAND() * 9)); 

PREPARE STMT FROM 'SELECT * FROM user LIMIT ?'; 
EXECUTE STMT USING @a; 

在FLOOR中,您可以將1和9替換爲您想要的動態範圍的範圍。

雖然,您也可能需要使用UNION才能獲得具有不同meta_value值的不同LIMIT-ed記錄。