2013-06-03 53 views
3

我不是那么熟悉mysql,所以不完全不是如何正确采样查询。我与WordPress的工作,并说明我想选择请参阅下面的图片是什么:mysql组合查询,逗号分隔列表中的ids

scetch of mysqlquery

我有一个特殊的帖子的ID。我想通过以下方式获得与其连接的所有其他帖子:

posts_meta表中可以存在的条目,其post_id与给定的ID匹配。其中一个条目meta_key具有一定的价值,并且该条目的meta_value是以逗号分隔的post_id的列表。我想选择*每个帖子,其ID *在以逗号分隔的列表

我开始与以下几点:

SELECT * 
FROM prefix_posts AS a 
JOIN prefix_postmeta AS b ON (a.ID = b.post_id) 
WHERE … //?? 

,但我不知道如何完成查询。我如何选择ID,依次选择帖子?我发现SO回答处理FIND_IN_SET,但我不想测试给定的ID是否在集合中,我更需要像子查询中的»STR_SPLIT«。

回答

1

我想选择*每一个帖子,其ID是在为什么不使用FIND_IN_SET方法?,它可以帮助您的问题 该查询返回所有帖子逗号分隔的列表

的其meta标识符的meta_value字段中包含您的“特殊发布标识”作为post_id。

SELECT * FROM Post a, meta b 
WHERE FIND_IN_SET(a.id, b.linked)>0 AND b.post_id= $id_post; 

尝试SQLFiddle,它似乎工作。 如果您想避免重复,请添加GROUP BY子句。

+0

谢谢!这个查询做什么,我想:SELECT * FROM AS prefix_posts一个 INNER JOIN prefix_postmeta为B WHERE b.meta_key = “my_desired_meta_key” 和FIND_IN_SET(a.ID,b.meta_value)> 0 AND = b.post_id“所需的ID“ – philipp