我有这张桌子'post_meta'
post_id name value
87 my_keyname1 randval1
87 my_keyname2 randval2
我想搜索2个不同的行,并希望返回单个post_id。我知道'name'和'value'的所有值,我想满足我的查询,我得到了相同的post_id,有2个不同的'name'和'value'行。
答案 0 :(得分:0)
SELECT DISTINCT post_id FROM post_meta
WHERE (name = 'my_keyname1' AND value = 'randval1')
OR (name = 'my_keyname2' AND value = 'randval2');
答案 1 :(得分:0)
如果您仅针对感兴趣的记录过滤表格,然后按post_id
分组,那么您想要的结果就是那些包含两个不同记录的组:
SELECT post_id
FROM post_meta
WHERE (name = 'my_keyname1' AND value = 'randval1')
OR (name = 'my_keyname2' AND value = 'randval2')
GROUP BY post_id
HAVING COUNT(DISTINCT name, value) = 2
如果保证组内每条记录的名称或值是唯一的,您可以将COUNT(DISTINCT name, value)
替换为COUNT(*)
以获得更好的效果。