我错过了什么吗?我的表包含:
country
,其值为“usa
”school-type
,其值为“4 Year University
”如果我使用第2行,查询将返回'220'。如果我使用第4行,它也会返回'220'。如果我在它们之间同时使用'OR',它会两次返回'220',但是如果我使用'AND',它就不会返回任何内容。有什么想法吗?
SELECT post_id FROM wp_postmeta WHERE
( (meta_key='school-type' AND meta_value='Community College')
OR (meta_key='school-type' AND meta_value='4 Year University'))
AND
( (meta_key='country' AND meta_value='usa')
OR (meta_key='country' AND meta_value='canada'))
答案 0 :(得分:1)
问题是,单行不能同时具有“学校类型”和“国家/地区”的meta_key
。由于这个原因,将两个不同的搜索结合起来会产生0个结果。
答案 1 :(得分:0)
答案 2 :(得分:0)
WHERE
会过滤每一行,因此meta_key
无法成为学校类型和国家/地区。
尝试HAVING
子句:
SELECT post_id
FROM wp_postmeta
WHERE meta_key='school-type' OR meta_key='country'
GROUP BY post_id
HAVING SUM(
IF(meta_key='school-type',
meta_value='Community College' OR meta_value='4 Year University',
meta_value='usa' OR meta_value='canada'
)) = 2
或者,如果你想获得两行:
SELECT post_id
FROM wp_postmeta
WHERE
((meta_key='school-type' AND meta_value='Community College') OR (meta_key='school-type' AND meta_value='4 Year University'))
OR
((meta_key='country' AND meta_value='usa') OR (meta_key='country' AND meta_value='canada'))