gpt4 book ai didi

MySQL:跨多个表选择不同并按日期时间排序

转载 作者:行者123 更新时间:2023-11-29 13:55:07 25 4
gpt4 key购买 nike

这是一个很难解释的问题,让我们看看我是否可以解释。

我正在寻找一种在 mysql 中通过三个表中不同 pid 选择最新 5 个条目(按日期时间 desc 排序)的方法。

下面是一个示例。

表1
*注意,表 1 中的列 id 需要替换为 pid 以匹配其他表(选择 id 作为 pid)。

  id*   datetime
|-----|------------|
| 1 | 1/1/2000 |
| 2 | 2/1/2000 |
| 3 | 3/1/2000 | ← two
| 4 | 1/3/2000 | ← five
| 5 | 1/3/2000 |

表2

  id    pid    datetime
|-----|-----|------------|
| 1 | 1 | 1/2/2000 |
| 2 | 1 | 1/2/2000 |
| 3 | 2 | 2/2/2000 | ← three
| 4 | 3 | 1/2/2000 |
| 5 | 5 | 1/4/2000 | ← four

表3

  id    pid    datetime
|-----|-----|------------|
| 1 | 1 | 6/1/2000 | ← one
| 2 | 1 | 1/1/2000 |
| 3 | 1 | 1/1/2000 |
| 4 | 2 | 1/1/2000 |
| 5 | 3 | 1/1/2000 |

结果将是

  pid    datetime
|-----|------------|
| 1 | 6/1/2000 | ← one
| 3 | 3/1/2000 | ← two
| 2 | 2/2/2000 | ← three
| 5 | 1/4/2000 | ← four
| 4 | 1/3/2000 | ← five


我对 mysql 还很陌生。我四处搜寻,这是迄今为止我想到的最好的方法,但它是完全错误的。感谢您的帮助。

SELECT DISTINCT pid, datetime 
from (SELECT id AS pid, datetime FROM table1
UNION
SELECT pid, datetime FROM table2
UNION
SELECT pid, datetime from table3) t
ORDER BY datetime DESC
LIMIT 5

最佳答案

您可以选择每个 pid 的最大日期

SELECT pid, max(`datetime`) as `datetime`
from (SELECT id AS pid, `datetime` FROM table1
UNION
SELECT pid, `datetime` FROM table2
UNION
SELECT pid, `datetime` from table3) t
group by pid
ORDER BY max(`datetime`) DESC
LIMIT 5

关于MySQL:跨多个表选择不同并按日期时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982538/

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