gpt4 book ai didi

mysql - 如果第一个表在 MySQL 查询中使用 UNION 没有返回记录,如何从另一个表中获取记录

转载 作者:可可西里 更新时间:2023-11-01 07:06:51 24 4
gpt4 key购买 nike

我有两个表名“activites”和“archived_activities”。我将我的事件表记录分成另一个表记录。 Activities 表仅包含用户的前 200 个最新事件,其余记录已移至 archived_activities 表。现在我只想在事件表返回 null 时加入两个表,然后我想对 archived_activities 表使用相同的偏移量和限制来获取下一条记录。下面我的查询无法正常工作。

SELECT * FROM activities WHERE user_id=87 LIMIT 180,20
UNION ALL
SELECT * FROM activities WHERE user_id=87 LIMIT 180,20

但是这个查询工作不正常。

有什么帮助吗?

最佳答案

这里的一种方法是进行联合,将当前记录和存档记录放入一个逻辑表中,但对它们进行排序,以便当前记录在存在时获得更高的优先级。我将位置 1 分配给当前记录,将位置 2 分配给存档记录。然后,我按这个位置排序并保留 200 条记录。

SELECT col1, col2, ...
FROM
(
SELECT col1, col2, ..., 1 AS position
FROM activities
WHERE user_id = 87
UNION ALL
SELECT col1, col2, ..., 2
FROM archived_activities
WHERE user_id = 87
) t
ORDER BY
position
LIMIT 200;

关于mysql - 如果第一个表在 MySQL 查询中使用 UNION 没有返回记录,如何从另一个表中获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46542155/

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