我对mysql并不熟悉,所以不完全不知道如何正确地对查询进行采样。我正在使用wordpress并说明我想要选择的内容,请参阅下图:
我有一个特别帖子的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«。
答案 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子句。