mysql结合查询,ids来自逗号分隔列表

时间:2013-06-03 08:54:13

标签: mysql

我对mysql并不熟悉,所以不完全不知道如何正确地对查询进行采样。我正在使用wordpress并说明我想要选择的内容,请参阅下图:

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,依次选择帖子?我找到了处理FIND_IN_SET的SO答案,但我不想测试给定的ID是否在集合中,我更需要子查询中的»STR_SPLIT«。

1 个答案:

答案 0 :(得分:1)

  

我想为ID位于逗号分隔列表

中的每个帖子选择*

为什么不使用FIND_IN_SET方法?,它可以帮助您解决问题 此查询返回所有在meta_value字段中具有id且具有您​​的“特殊帖子ID”作为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子句。