2012-11-28 37 views
3

我有一个表值wp_posts包含post_dateauthor_id检查在MySQL查询3米不同的日期范围

我需要找到author_idwp_posts凡在有职位(全部)3时间范围:

wp_posts.post_date BETWEEN '2012-11-05 00:00:00' AND '2012-11-10 23:59:59' 
wp_posts.post_date BETWEEN '2012-11-12 00:00:00' AND '2012-11-17 23:59:59' 
wp_posts.post_date BETWEEN '2012-11-19 00:00:00' AND '2012-11-25 23:59:59' 

看起来很简单,但我无法弄清楚。 如果我把AND放在每个日期范围内,总是会返回0.

任何想法?

回答

1

你为什么不把OR:

(wp_posts.post_date BETWEEN '2012-11-05 00:00:00' AND '2012-11-10 23:59:59') OR 
(wp_posts.post_date BETWEEN '2012-11-12 00:00:00' AND '2012-11-17 23:59:59') OR 
(wp_posts.post_date BETWEEN '2012-11-19 00:00:00' AND '2012-11-25 23:59:59') 

编辑:

SELECT author_id FROM wp_posts 
WHERE author_id IN (
    SELECT author_id FROM wp_posts WHERE post_date BETWEEN '2012-11-05 00:00:00' AND '2012-11-10 23:59:59' 
) AND author_id IN (
    SELECT author_id FROM wp_posts WHERE post_date BETWEEN '2012-11-12 00:00:00' AND '2012-11-17 23:59:59' 
) AND author_id IN (
    SELECT author_id FROM wp_posts WHERE post_date BETWEEN '2012-11-19 00:00:00' AND '2012-11-25 23:59:59' 
) 

这是你需要什么?

+0

Hello @SubRed。实际上需要根据author_id分组的帖子,它们在所有3个日期范围内匹配。如果我发现author_id的帖子在一个日期范围内,我需要忽略他,如果适用于两个日期范围,则相同。 我只需要,如果author_id在所有3个日期范围中都有帖子。 – Gude

+0

我编辑了我的答案,但尚未经过测试。 – SubRed

+0

谢谢!解决了! – Gude

0
SELECT author_ID 
FROM posts 
WHERE (wp_posts.post_date BETWEEN '2012-11-05 00:00:00' AND '2012-11-10 23:59:59') OR 
     (wp_posts.post_date BETWEEN '2012-11-12 00:00:00' AND '2012-11-17 23:59:59') OR 
     (wp_posts.post_date BETWEEN '2012-11-19 00:00:00' AND '2012-11-25 23:59:59') 
GROUP BY author_ID 
HAVING COUNT(*) = 3 
0

试试这个::

(wp_posts.post_date BETWEEN '2012-11-05 00:00:00' AND '2012-11-10 23:59:59') or 
(wp_posts.post_date BETWEEN '2012-11-12 00:00:00' AND '2012-11-17 23:59:59') or 
(wp_posts.post_date BETWEEN '2012-11-19 00:00:00' AND '2012-11-25 23:59:59')