gpt4 book ai didi

mysql - 通过子帖子内容显示父帖子

转载 作者:行者123 更新时间:2023-11-29 10:07:31 26 4
gpt4 key购买 nike

我想通过过滤子帖子/父帖子的内容来通过子帖子显示父帖子。我有一个表消息。它是这样的:

m_id   m_parent_post_id   m_user_id  m_topic  m_message  m_status  m_by_admin

1 0 1234 t1 first.. replied 0
2 1 1234 null second.. na 0
3 1 1234 null third.. na 1
4 1 1234 null fourth.. na 0
5 0 2222 t2 first.. replied 2
6 5 2222 null second na 0
7 0 1111 t3 second new 0

表格说明:

  • m_id 自动递增
  • m_parent_post_id 父帖子的 m_id,0 表示该行是家长帖子
  • 如果是子帖子,则 m_topic 为 null
  • m_status 是父帖子的状态,如果是、由用户回复或由管理员回答。 na 仅适用于子帖子。
  • m_by_admin 是行的状态,如果为 0,则表示用户是添加该行的人;1 表示管理员回复;2 表示创建该消息的管理员。

因此,在这里,我尝试选择 m_message 包含第二个字符串或单词的所有消息,并且只应创建它(不是父 ID 的行)由用户。选择它后,它应该仅显示其父帖子,其中 m_status已回复

SELECT * FROM message where m_message LIKE '%second%' WHERE m_by_admin = 0 AND

...不知道接下来会发生什么。

这只会显示子帖子,而不是父帖子。应将 m_id 15 显示为预期输出。

 1           0               1234      t1       first..    replied      0
5 0 2222 t2 first.. replied 2

7 0 1111 t3 second new 0

需要帮助。如果可能的话,任何更快的查询,我有数百行父子帖子。

最佳答案

SELECT `P`.* FROM message P WHERE 
`P`.`m_id` IN (SELECT `C`.`m_parent_post_id` FROM message C
WHERE `C`.`m_message` LIKE '%second%' AND `C`.`m_by_admin` = 0)
OR (`P`.`m_message` LIKE '%second%' AND `P`.`m_by_admin` = 0 AND `P`.`m_parent_post_id` = 0);

将用户表连接为:

SELECT `P`.*, `U`.`user_id` FROM message P 
JOIN user U ON (`U`.`user_id` = `P`.`m_user_id`)
WHERE `P`.`m_id` IN
(SELECT `C`.`m_parent_post_id` FROM message C
WHERE `C`.`m_message` LIKE '%second%' AND `C`.`m_by_admin` = 0)
OR (`P`.`m_message` LIKE '%second%' AND `P`.`m_by_admin` = 0 AND `P`.`m_parent_post_id` = 0);

关于mysql - 通过子帖子内容显示父帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com