基于工作日(日期时间)更新列(MySQL)

时间:2016-01-18 16:48:49

标签: 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'

我确定我离开这里,有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

您无法更新SELECT的结果,但您可以使用where条件进行更新,例如:

transaction

答案 1 :(得分: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) |

见这里:sqlfiddle