我创建了一个查询来显示我的包。
它工作正常但我的问题是为每个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
答案 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记录。