Mysql多个限制随机记录

时间:2014-01-10 07:36:18

标签: mysql sql wordpress

我创建了一个查询来显示我的包。

它工作正常但我的问题是为每个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 个答案:

答案 0 :(得分: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记录。