如何从MySQL上的单个查询中搜索不同行的相同值
我有这张桌子“post_meta”如何从MySQL上的单个查询中搜索不同行的相同值,mysql,wordpress,Mysql,Wordpress,我有这张桌子“post_meta” post_id name value 87 my_keyname1 randval1 87 my_keyname2 randval2 我想搜索两个不同的行,并想返回一个post\u id。我知道“name”和“value”的所有值,并且我想满足我的查询,即我得到了具有两个不同“name”和“value”行的相同post\u id。如果您只筛选表中感兴趣的记录,然后按post\u id分组,您想要的结果是那些正好包含两个不同记
post_id name value
87 my_keyname1 randval1
87 my_keyname2 randval2
我想搜索两个不同的行,并想返回一个post\u id。我知道“name”和“value”的所有值,并且我想满足我的查询,即我得到了具有两个不同“name”和“value”行的相同post\u id。如果您只筛选表中感兴趣的记录,然后按post\u id分组,您想要的结果是那些正好包含两个不同记录的组:
SELECT DISTINCT post_id FROM post_meta
WHERE (name = 'my_keyname1' AND value = 'randval1')
OR (name = 'my_keyname2' AND value = 'randval2');
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*替换COUNTDISTINCT name,value以获得更好的性能。这将只查询1行。我需要2行具有与我的姓名、值匹配的相同post_id。我需要满足第二行也具有该值的查询。这是wordpress上的一篇博文。我编辑了我的问题,希望你能理解我的观点,在解释我的问题时有点困难。