3

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

mysqlquery的草图

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

在表中可以存在与给定匹配的posts_meta条目。这些条目之一具有特定值,并且该条目的's 是逗号分隔的列表。我想为逗号分隔列表中的每个帖子选择post_idIDmeta_keymeta_valuepost_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« 之类的东西。

4

1 回答 1

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 子句。

于 2013-06-03T09:51:20.623 回答