Wordpress SQL Query组合所有行的列数据

时间:2013-04-17 21:50:43

标签: mysql wordpress

我有一个Wordpress插件,允许用户保存喜爱的帖子。在我的Wordpress MySQL数据库中,该表如下所示:

id     | user_id | post_id  
-------+---------+------------
1      | 1       | 3,4,5,6,7,8  
2      | 2       | 5,7,8,10
3      | 5       | 3,6,8,10

我希望获取所有post_id个数字,并将它们组合成一个变量,这样我就可以foreach找到我正在阅读的当前帖子的匹配数。

例如,如果我正在阅读第10号帖子,我希望能够看到有2个人将其保存为收藏夹。

我已尝试$data = $wpdb->get_var("SELECT post_id FROM $table_name");var_dump($data);,但这只会返回我的最喜欢的帖子,而非所有最喜欢的帖子。

1 个答案:

答案 0 :(得分:1)

虽然我在关于规范化的评论中确实扮演了恶魔倡导者,但这种表格布局看起来确实很不错。但是,如果您无法规范化数据库表并且必须使用您所拥有的内容,那么从技术上讲,您可以使用相当hacky的sql语句来执行您所要求的操作:


SELECT count(user_id) as TotalWishes
FROM table_name
WHERE (
 (post_id LIKE 'n,%') OR
 (post_id LIKE '%,n,%') OR
 (post_id LIKE '%,n')
 )

此示例中的n是您的帖子的编号。

即使写这些内容我也觉得很脏,但在对你的问题的最严格解释中,这个查询应该做你想要的。