gpt4 book ai didi

php - 按时间顺序从不同表中获取帖子

转载 作者:行者123 更新时间:2023-11-30 22:58:02 24 4
gpt4 key购买 nike

我有 4 个 mysql 表,即 post_type1,post_type2,post_type3,post_type4 。这 4 个表有不同的编号。列和不同的结构。它们中的常见列是 'id',这是主键和时间(日期时间),这是写帖子的时间。如果我要从一个表中获取最后 10 个帖子,我可以这样做:

SELECT * FROM post_type1 ORDER BY time DESC LIMIT 10

但是,如果我想获得最后 10 个帖子,而不管它们属于 4 个表中的哪一个。

我想到了一个非常低效的想法,即从每个表中获取 10 条记录(总共 40 条记录),然后使用 php 应用合并排序并获得前 10 条记录。有什么有效的方法可以做到这一点?我真的深陷其中。提前致谢。

最佳答案

使用 UNION 将它们组合起来。由于它们具有不同的列,因此您需要在子查询中为缺失的列添加占位符。

SELECT *
FROM (
SELECT "post_type1" AS tablename, id, time, col1, col2, NULL AS col3, col4, col5
FROM post_type1
ORDER BY time DESC LIMIT 10
UNION
SELECT "post_type2" AS tablename, id, time, col1, NULL, col3, col4, NULL
FROM post_type2
ORDER BY time DESC LIMIT 10
UNION
SELECT "post_type3" AS tablename, id, time, NULL, col2, col3, col4, col5
FROM post_type3
ORDER BY time DESC LIMIT 10
UNION
SELECT "post_type4" AS tablename, id, time, col1, col2, col3, NULL, NULL
FROM post_type4
ORDER BY time DESC LIMIT 10
)
ORDER BY time DESC
LIMIT 10

确保所有表在 time 列上都有索引:

ALTER TABLE post_type1 ADD INDEX (time)

关于php - 按时间顺序从不同表中获取帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25423796/

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