当前位置: 首页 > 面试题库 >

当我选择MAX(updated_date)时,其他列的值错误

孙书
2023-03-14
问题内容

我正在使用select field1, max(updated_date) from mytable
我得到的正确值max(updated_date),即最大日期。
但是对于field1我来说,当我真的想要第三条记录(具有最大日期值的记录)中的“ ta3”值时,只需获取第一条记录的值即可,即“ ta1”。

例如

+------------+---------------------+
| field1     | update_date         |
+------------+---------------------+
| ta1        | 2012-03-11 11:05:15 |
| ta2        | 2012-03-11 11:05:32 |
| ta3        | 2012-03-11 11:05:56 |
+------------+---------------------+
3 rows in set (0.00 sec)

+------------+---------------------+
| field1     | max(update_date)    |
+------------+---------------------+
| ta1        | 2012-03-11 11:05:56 |
+------------+---------------------+
1 row in set (0.00 sec)

问题答案:

您需要GROUP BY子句或更复杂的查询。

SELECT field1, MAX(updated_date)
  FROM mytable
 GROUP BY field1

对于示例数据,这将返回3行。

您更有可能想要:

SELECT t1.field1, t3.max_date
  FROM mytable AS t1
  JOIN (SELECT MAX(t2.updated_date) AS max_date
          FROM mytable AS t2
       ) AS t3
    ON t1.updated_date = t3.max_date;

对于示例数据,这将返回1行:

ta3   2012-03-11 11:05:56

在主要的DBMS中,当select-list中包含聚合列和非聚合列的混合时,只有MySQL允许您省略GROUP BY子句。SQL标准需要GROUP
BY子句,并且您必须在其中列出所有非聚合列。有时,在MySQL中,省略GROUP BY子句会产生您想要的答案;但是,它设法经常给出一个意想不到的答案。



 类似资料:
  • 我正在使用如下所示的示例表。数据集有多个组,每次对表进行写入时,数据集的RunNumber以及每个组的数据和总数都会递增。每个数据集/组组合通常都有多行,示例如下: 对于数据集和组的每个组合,我要做的是返回给定数据集/组组合中具有最大值(RunNumber)的行的所有数据。例如,上面的示例将返回: 在数据集/组匹配的地方,所有行都保留该给定组合的最大运行数。现在,我已经将其分为两个单独的查询,其中

  • 我有一个表,它有4列()gender具有与每个客户链接的唯一值:、或。 该部门与每种产品(男性或女性)都有独特的价值 我做了一个复杂的过程。首先,使用客户信息将male和其他客户分开(创建了两个表CUST_MALEY和cust_other) 如果CUST_MALEY表中有客户,则使用join,返回men division products行(其中division='men');如果cust_oth

  • 问题内容: 我需要帮助或想法如何编写它,一个mysql语句。当特定列的值更改时,我需要选择一行。此后具有相同值的行不应选择。例如,我们有一个像这样的表,用以下值填充: 如果我想在status_1更改时选择行,则查询应选择ID为1和5的行,如果我正在使用status_2的ID为:1、3、5、7的行,并且如果我使用status_3的所有ID,则为ID 。希望有人可以在过去的所有时间里为我提供帮助。 提

  • 请假设下表: 我需要根据对其进行分组,因此,下面是我的查询: 结果如下: 现在我还需要获取这些行的。以下是预期的结果: 知道我该怎么做吗?

  • $result=mysql_query(“从cardex中选择max(Cardex_ID),其中onderdeel_id=$onderdeel_id”);if(!$RESULT){die(“无法查询:”.mysql_error());}

  • 问题内容: 假设我有这张桌子(小提琴可用)。 我按行对行进行分组,对于每个组,我都希望从column中获得一个值。但是,我不需要 任何 值,但是我想从具有maximal的行中获取值,并从所​​有这些中获取具有maximal的值。换句话说,我的结果应该是 当前解决方案 我知道一个查询来实现这一点: 题 但是我认为这个查询 很难看 。主要是因为它使用了一个 依赖的子查询 ,感觉就像是真正的性能杀手。因