如何从MySQL上的单个查询中搜索不同行的相同值

时间:2012-07-04 00:03:08

标签: mysql wordpress

我有这张桌子'post_meta'

post_id name        value
87      my_keyname1 randval1
87      my_keyname2 randval2

我想搜索2个不同的行,并希望返回单个post_id。我知道'name'和'value'的所有值,我想满足我的查询,我得到了相同的post_id,有2个不同的'name'和'value'行。

2 个答案:

答案 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(*)以获得更好的效果。