Mysql 如何在查询中对类似父/子树的表应用限制

Mysql 如何在查询中对类似父/子树的表应用限制,mysql,sql,Mysql,Sql,以下是表格结构: CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `from_uid` int(11) NOT NULL, `content` varchar(300) NOT NULL, `parent` int(11) DEFAULT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`

以下是表格结构:

CREATE TABLE `message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `from_uid` int(11) NOT NULL,
  `content` varchar(300) NOT NULL,
  `parent` int(11) DEFAULT NULL,
  `create_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`),
  KEY `from_uid` (`from_uid`),
  KEY `parent` (`parent`),
  CONSTRAINT `message_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `u
ser` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `message_ibfk_2` FOREIGN KEY (`from`) REFERENCES `user
` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `message_ibfk_3` FOREIGN KEY (`parent`) REFERENCES `message` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 |
这是一个存储用户消息及其回复的表。如果我对整个查询应用一个限制,比如限制30,结果将是30行同时包含父消息和子消息(回复)。但是如何在每条邮件的回复中获得30条家长邮件呢?

试试以下方法:

SELECT `message`.* 
FROM 
        `message` INNER JOIN
        (SELECT `id` FROM `message` WHERE `parent` IS NULL LIMIT 30) `ids` ON 
            `message`.`id` = `ids`.`id` OR `message`.`parent` = `ids`.`id`

如果您对整个查询应用了限制?向我们显示您的代码。@JoeStefanelli从消息中选择*,其中uid=1限制30;此查询将同时获取30条父消息和子消息(回复)。我正在尝试获取30条带有每条消息回复的家长消息。