【问题标题】:mysql query compare MAX value and given parameter and return 0 or 1 if max is qual to given onemysql查询比较MAX值和给定参数,如果max等于给定1,则返回0或1
【发布时间】:2015-11-29 18:39:18
【问题描述】:

我有这个 UNION 查询

mysql> SELECT gpio_lastevent FROM `GPIO_setup` WHERE gpio_id = 5 UNION select max(gpio_lastevent) from GPIO_setup;

结果是:

+---------------------+
| gpio_lastevent      |
+---------------------+
| 2015-11-29 14:36:30 |
| 2015-11-29 17:28:47 |
+---------------------+

在 mysql 级别我需要比较 MAX 是否等于给定参数,如果为 true,则在另一列中返回 0 或 1,如果为 false,则返回 0

我期望的结果是:

+---------------------+-------------------
| gpio_lastevent      |gpio_latestevent_true
+---------------------+-------------------
| 2015-11-29 17:28:47 |1
+---------------------+-------------------

我认为这很简单,但我不知道如何进行查询。 感谢您的帮助

【问题讨论】:

  • 这里需要更多信息。输入参数是什么?是gpio_lastevent 时间戳还是gpio_id 值?您的两个示例有点不一致,因为您希望在相等时返回 1,否则返回 0,但是联合查询返回的行是不相等的 - 我们希望您期望的结果是 0 对于这些值,对吗?
  • gpio_id 只是输入参数,它总是整数。 gpio_lastevent 已经在数据库中。结果应包含给定 gpio_id 的 gpio_lastevent 时间戳,以及该时间戳是否为 MAX 个的信息。我实际上是在搜索给出一个输入值的两个信息。

标签: mysql compare max


【解决方案1】:

一种方法是使用子查询:

SELECT
  gpio_lastevent,
  gpio_lastevent=max_lastevent
FROM
  `GPIO_setup` CROSS JOIN (SELECT MAX(gpio_lastevent) as max_lastevent
                           FROM GPIO_Setup) m
WHERE
  gpio_id = 5

在子查询中我得到最后一个事件,然后我将这个子查询加入所有行,如果当前事件是最后一个事件,gpio_lastevent=max_lastevent 将为 1,否则为 0。

【讨论】:

  • 刚刚好,非常感谢您的及时回复,我得到了我需要的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多