我如何 "append" 具有来自 SQL 中的 table 值的列?

How do I "append" a column with a value from a table in SQL?

上下文

我有一个 SQL table 具有以下结构:

# TableName
+------------+------------+
| ColumnA    | ColumnB    |
+------------+------------+
| Person A   | 2022-03-01 |
| Person B   | 2022-03-01 |
| Person C   | 2022-03-01 |
| ...        | ...        |
| Person AAA | 2022-04-12 |
| Person BBB | 2022-04-12 |
| Person CCC | 2022-04-12 |
+------------+------------+

我想查询 N 天前 returns ColumnA 中的所有人(称之为 5), 以及 table 中 ColumnB 中的最大日期。例如:

# TableName
+------------+------------+
| ColumnA    | ColumnB    |
+------------+------------+
| Person D   | 2022-04-15 | # This record's value for ColumnB = 2022-04-10
| Person E   | 2022-04-15 | # This record's value for ColumnB = 2022-04-10
| Person F   | 2022-04-15 | # This record's value for ColumnB = 2022-04-10
| Person G   | 2022-04-15 | # This record's value for ColumnB = 2022-04-10
+------------+------------+

The Catch(es)

这个查询是通过Panda's read_sql()执行的,所以我不能做类似下面的事情(必须是一个SELECT语句):

SET @max_date = (SELECT MAX(ColumnB) FROM TableName);

SELECT
    ColumnA,
    ColumnB,
    @max_date
FROM TableName
WHERE ColumnB = (
    SELECT
        DISTINCT
        ColumnB
    FROM TableName
    ORDER BY ColumnB DESC
    LIMIT 1
    OFFSET 4
);

此外,ColumnB 不包括 所有 天,所以我不能这样做:

SELECT
    ColumnA,
    DATE_ADD(ColumnB, INTERVAL 4 DAYS) as Blah
FROM TableName
WHERE ColumnB = (
    SELECT
        DISTINCT
        ColumnB
    FROM TableName
    ORDER BY ColumnB DESC
    LIMIT 1
    OFFSET 4
);

问题

我将如何编写这样的查询?有什么方法可以通过 JOIN 或类似的东西“附加” MAX(ColumnB) 吗?

希望我答对了你的问题:

SELECT 
    ColumnA,
    max(ColumnB) as ColumnB
FROM
    TableName
WHERE
    ColumnB >= NOW() - INTERVAL 5 DAYS;

多一点complex/explicit

SELECT
  a.*,
  b.MaxColumnB
FROM TableName a
  JOIN (SELECT MAX(ColumnB) As MaxColumnB FROM TableName) b ON 1 = 1
WHERE a.ColumnB = (
    SELECT
        DISTINCT
        ColumnB
    FROM TableName
    ORDER BY ColumnB DESC
    LIMIT 1
    OFFSET 4
);