MySQL联合查询,从逗号分隔的列表中获取ID。

3

我对mysql不是很熟悉,因此不确定如何正确地编写查询语句。 我正在使用WordPress,并且为了说明我想要选择的内容,请参见下面的图像:

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,以便依次选择帖子?我在stackoverflow上找到了一些回答,涉及到FIND_IN_SET,但我不想测试给定的id是否在集合中,我更需要像子查询中的»STR_SPLIT«那样的东西。

1个回答

1

我想选择每个ID在逗号分隔列表中的帖子

为什么不使用FIND_IN_SET方法?它可以帮助你解决问题 这个查询返回所有帖子,其ID在meta_value字段中具有特定post_id的meta行中。

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

SQLFiddle上尝试过,似乎可以工作。 如果想要避免重复,请添加GROUP BY子句。


谢谢!这个查询做了我想要的事情: SELECT * FROM prefix_posts AS a INNER JOIN prefix_postmeta AS b WHERE b.meta_key = "my_desired_meta_key" AND FIND_IN_SET( a.ID, b.meta_value )>0 AND b.post_id = "the desired ID" - philipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接