基于工作日(datetime)更新列(MySQL)

基于工作日(datetime)更新列(MySQL),mysql,Mysql,嘿,伙计们,MySQL还是新手 我想做的是根据专栏是否满足一周中某一天的条件来更新专栏。 我知道这是错误的,但我觉得这会让我更好地了解自己在做什么 SELECT * FROM myschema.mytable WHERE WEEKDAY(OrderDate) BETWEEN 0 AND 0 ALTER TABLE myschema.mytable ADD DateNumber INTEGER UPDATE myschema.mytable SET DateNumber '1' 我确信我离这里很

嘿,伙计们,MySQL还是新手 我想做的是根据专栏是否满足一周中某一天的条件来更新专栏。 我知道这是错误的,但我觉得这会让我更好地了解自己在做什么

SELECT * FROM myschema.mytable WHERE WEEKDAY(OrderDate) BETWEEN 0 AND 0
ALTER TABLE myschema.mytable
ADD DateNumber INTEGER
UPDATE myschema.mytable SET DateNumber '1'

我确信我离这里很远,有人能给我指出正确的方向吗?

您不能更新选择的结果,但可以使用where条件进行更新,例如:

UPDATE myschema.mytable SET DateNumber='1' WHERE WEEKDAY(OrderDate) BETWEEN 0 AND 0

我猜这可能是你想要的:

SELECT *, CASE WEEKDAY(OrderDate) WHEN 0 THEN 1 END DateNumber FROM mytable
这样,您就不会更改实际的表,而是向输出中添加一个额外的(有条件的)“DateNumber”列

有这样一张桌子

CREATE TABLE mytable (Id int, OrderDate datetime, SomeNumber int null);

INSERT INTO mytable (Id, OrderDate, SomeNumber) VALUES
    (1, '2016-1-7', 5),
    (2, '2016-1-8', 6),
    (3, '2016-1-9', 4),
    (4, '2016-1-10', 1),
    (5, '2016-1-11', 9),
    (6, '2016-1-12', 7);
您将获得以下输出:

| Id |                 OrderDate | SomeNumber | DateNumber |
|----|---------------------------|------------|------------|
|  1 | January, 07 2016 00:00:00 |          5 |     (null) |
|  2 | January, 08 2016 00:00:00 |          6 |     (null) |
|  3 | January, 09 2016 00:00:00 |          4 |     (null) |
|  4 | January, 10 2016 00:00:00 |          1 |     (null) |
|  5 | January, 11 2016 00:00:00 |          9 |          1 |
|  6 | January, 12 2016 00:00:00 |          7 |     (null) |

请看这里:

您的问题不是很清楚。首先,你为什么要改变你的桌子?第二,为什么要存储冗余信息?应该不需要使用列存储通过查询OrderDate列已经可以获得的信息。你到底想解决什么问题?这太完美了。我真的很想能够根据一周中的哪一天提取一份报告。最后,我想将这些数据移动到另一个完整的表中,以缩短查询结果的时间。我想也许你是对的,有一个查询也可以做到这一点。不过,我对MySQL不是很有经验,所以我的想法可能没有多大意义。