gpt4 book ai didi

php - Mysql查询对两个表进行排序和合并

转载 作者:行者123 更新时间:2023-11-29 12:20:02 25 4
gpt4 key购买 nike

我的 mysql 数据库中有两个表,名为 forum_topics 和 forum_replies。我希望了解添加的最新帖子/回复的概述,如下所示:http://prntscr.com/6ixtz4

为此,我需要一种方法使其按两个表中的时间排序,如果结果中有 forum_reply,则需要从 forum_topics 获取其主题。

我怎样才能做到这一点?我没有 mysql 查询可以引用来完成这项工作。

    CREATE TABLE IF NOT EXISTS `forum_topics` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`topic` varchar(255) NOT NULL,
`thread` varchar(255) NOT NULL,
`level` int(2) NOT NULL DEFAULT '0',
`creator` int(255) NOT NULL,
`time` varchar(255) NOT NULL,
`innlegg` text NOT NULL,
`ip` varchar(255) NOT NULL,
`locked` enum('yes','no') NOT NULL DEFAULT 'no',
`deleted` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


CREATE TABLE IF NOT EXISTS `forum_replies` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`topicid` int(255) NOT NULL,
`userid` int(255) NOT NULL,
`time` int(255) NOT NULL,
`reply` text NOT NULL,
`deleted` enum('yes','no') NOT NULL DEFAULT 'no',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;

示例数据:

 in table forum_topics

id |topic| time|
1 | test | 10
2 | test2 | 29



in table forum replies:
id | topicid | time |

1 | 1 | 18
2 | 2 | 28

在这个例子中,我希望结果像这样排序:

10
18
28
29

如果 forum_replies 是结果之一,则需要来自 forum_topics 的一些数据,但如果 forum_topics 是结果之一,则不需要来自 forum_replies 的任何数据。

topicid 是来自该回复所属主题的 forum_topics 的 ID。

所以最后我想创建如图所示的示例输出。

编辑:它将是包含以下顺序的结果: 10 18 28 29

最佳答案

通过加载示例数据集中的数据,这将从两个表中获取时间,但对两个表中的时间进行排序,就像它们在一个表中一样。下面的查询获取结果,然后按时间顺序对它们进行排序。由于两个表具有相同的结构,因此您可以将它们“合并”在一起,就好像它们是一个表一样,并使用“order_by”按时间排序

select time
from forum_topics
UNION
select time
from forum_replies
order by time

注意:我能够加载上述请求中的两个表,但每个表都没有最后一行。换句话说,我修剪了涉及引擎的部分,然后创建了表格,然后输入了提供的数据..

关于php - Mysql查询对两个表进行排序和合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157916/

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