【发布时间】:2011-03-21 22:13:52
【问题描述】:
我正在尝试使用以下查询,但没有得到任何记录:
SELECT wp_posts.* FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
WHERE ( wp_term_relationships.term_taxonomy_id IN (92) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private' OR wp_posts.post_status = 'future')
AND wp_postmeta.meta_key = '_inicio_date'
AND mt1.meta_key = '_inicio_date'
AND mt2.meta_key = '_eventtimestamp'
AND ( (mt1.meta_value BETWEEN 20110201 AND 20110231) OR (mt2.meta_value BETWEEN 20110201 AND 20110231) )
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date asc
但是,如果我这样做:
SELECT wp_posts.* FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
WHERE ( wp_term_relationships.term_taxonomy_id IN (92) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private' OR wp_posts.post_status = 'future')
AND wp_postmeta.meta_key = '_inicio_date'
AND mt1.meta_key = '_inicio_date'
AND mt2.meta_key = '_eventtimestamp'
AND (mt1.meta_value BETWEEN 20110201 AND 20110231)
OR (mt2.meta_value BETWEEN 20110201 AND 20110231)
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date asc
它获取记录,但忽略所有带有“OR”的记录的前面的“AND”
如何嵌套最后一个“AND”和“OR”?
谢谢
【问题讨论】:
-
期望的条件是什么,请解释... 哪个条件结果失败,请分享您的分析.....
-
条件 AND ( (mt1.meta_value BETWEEN 20110201 AND 20110231) OR (mt2.meta_value BETWEEN 20110201 AND 20110231) )
-
条件“AND ( (mt1.meta_value BETWEEN 20110201 AND 20110231) OR (mt2.meta_value BETWEEN 20110201 AND 20110231) )”失败,没有找到记录
-
@Mario,正如 Nitin 建议的那样,这是嵌套这两个条件的方式。您可能没有任何记录满足您在 #1 中指定的所有条件。
-
您是否 100% 确定您确实有满足第一条语句的记录?