gpt4 book ai didi

mysql - 为 DueDate 和 DueTime 字段为不同列的表更新大于今天日期和时间的记录

转载 作者:行者123 更新时间:2023-11-29 07:37:02 24 4
gpt4 key购买 nike

我有一张看起来有点像这样的 table

CREATE TABLE Foo (
UserAction VARCHAR(20),
JoiningDate DATETIME,
JoiningTime TIME
);

它由以下记录组成:

UserAction  JoiningDate          JoiningTime  
---------- ------------------- -------------
Pending 2018-01-14 00:00:00 20:00:00
Pending 2018-01-15 00:00:00 16:00:00
Pending 2018-01-16 00:00:00 16:00:00
Pending 2018-01-16 00:00:00 20:00:00
Pending 2018-01-17 00:00:00 16:00:00

现在我想更新所有记录:

  1. JoiningDate 大于 2018-01-16
  2. 但如果加入日期等于 2018-01-16,则 JoiningTime18:00:00 或以上

这是我最终想要的输出:

UserAction  JoiningDate          JoiningTime  
---------- ------------------- -------------
Pending 2018-01-14 00:00:00 20:00:00
Pending 2018-01-15 00:00:00 16:00:00
Pending 2018-01-16 00:00:00 16:00:00
DONE 2018-01-16 00:00:00 20:00:00
DONE 2018-01-17 00:00:00 16:00:00

目前我必须编写两个不同的查询来实现此目的:

UPDATE foo SET UserAction = 'DONE' WHERE JoiningDate > '2018-01-16 00:00:00';
UPDATE foo SET UserAction = 'DONE' WHERE JoiningDate = '2018-01-16 00:00:00' AND JoiningTime >= '18:00:00';

而且效果很好。我的问题是,是否有任何方法可以仅使用一个查询来实现相同的目的?

最佳答案

只需使用适当的 WHERE 子句:

UPDATE foo
SET UserAction = 'DONE'
WHERE
JoiningDate > '2018-01-16' OR
(JoiningDate = '2018-01-16' AND JoiningTime >= '18:00:00');

这实际上符合您更新加入日期大于 2018-01-16 或加入日期为 2018-01-16 的所有记录的要求,并且加入时间为 18:00:00 或更晚。你的查询实际上做了不同的事情,但我已经根据你写的内容回答了。

关于mysql - 为 DueDate 和 DueTime 字段为不同列的表更新大于今天日期和时间的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321227/

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