基于工作日(datetime)更新列(MySQL)
嘿,伙计们,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' 我确信我离这里很
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不是很有经验,所以我的想法可能没有多大意义。