正在做一个 wordpress bbpress 的接口,需要查询一篇帖子的评论,但只需要查询出回复主楼的评论,表结构大致如下
wp_posts 表
ID | post_author | post_date | post_content | post_type |
---|---|---|---|---|
1 | 1 | 2021/12/22 2:52 | 这是主楼 | topic |
2 | 2 | 2021/12/22 3:52 | 这条回复主楼 | reply |
3 | 4 | 2021/12/23 4:52 | 这条回复#2 | reply |
4 | 6 | 2021/12/24 5:52 | 这条回复#3 | reply |
5 | 18 | 2021/12/25 6:52 | 这条也回复主楼 | reply |
wp_postmeta 表
meta_id | post_id | meta_key | meta_value |
---|---|---|---|
1 | 1 | _bbp_topic_id | 1 |
2 | 2 | _bbp_topic_id | 1 |
3 | 3 | _bbp_topic_id | 1 |
4 | 3 | _bbp_reply_to | 2 |
5 | 4 | _bbp_topic_id | 1 |
6 | 4 | _bbp_reply_to | 3 |
7 | 5 | _bbp_topic_id | 1 |
也就是只要查询出上面例子里加粗的两行就行。尝试了这样写,但是会把非回复主楼的评论也给查询上了
SELECT * from wp_posts, wp_postmeta WHERE ID = post_id AND post_status = 'publish' AND meta_key = '_bbp_topic_id' AND meta_value = 1 order by post_date DESC LIMIT 20
观察了一下,回复非主楼的评论在 meta 表里不会有 meta_key 为_bbp_reply_to 这条记录,但是不知道怎么写 SQL 语句能排除掉。
希望能得到万能的 V 友帮助,谢谢!
1
liprais 2022-05-04 00:35:56 +08:00 via iPhone
join 之后 meta_key 不等于不就完了
|
2
bxb100 2022-05-04 00:38:20 +08:00 1
|
3
bxb100 2022-05-04 00:53:02 +08:00
|
4
ration 2022-05-04 01:03:28 +08:00 via Android 1
感觉有点复杂
select post_id from wp_postmeta where meta_value=1 and post_id <>1 and not exists ( select 1 from wp_postmeta where post_id = wp_postmeta.post_id and meta_value=1 and meta_key =‘_bbp_reply_to’) |