2014-01-10 5 views
3

Я создал запрос для своих пакетов.Mysql multiple limit

SQL

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

Это работает отлично. Но теперь я хочу установить ограничение в каждом значении meta_key, поэтому на основе этого я могу отображать продукты в своих пакетах.

Благодаря

Sanket

ответ

0

Попробуйте это:

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

он работает нормально, но мой вопрос, чтобы получить случайный продукт для каждого meta_value.And для этого мне нужно, чтобы установить предел в нем .suppose в meta_value = '0' есть 10 продуктов, но я хочу отобразить из него две случайные записи. в meta_value = '2' Я хочу отобразить 5 случайных записей из этого. Как это я хочу получить из sql. – sanket