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条带有每条消息回复的家长消息。