Mysql 将第二行移到第一行,然后所有记录在SQL中遵循相同的顺序

Mysql 将第二行移到第一行,然后所有记录在SQL中遵循相同的顺序,mysql,sql,function,stored-procedures,Mysql,Sql,Function,Stored Procedures,我有一个具有这种结构的表,我想显示周名称的记录基础,即第一个位置的星期一,第二个位置的星期二…所以在最后一个位置的星期天,所以我需要将星期一更改为第一个,星期天将持续 1 Sunday 00:30:00.000 19:30:00.000 2 Monday 01:30:00.000 17:01:00.000 3 Tuesday 23:00:00.000 00:30:00.000 4 Wednesday 01:00:00.000 15:54:00.00

我有一个具有这种结构的表,我想显示周名称的记录基础,即第一个位置的星期一,第二个位置的星期二…所以在最后一个位置的星期天,所以我需要将星期一更改为第一个,星期天将持续

1   Sunday  00:30:00.000    19:30:00.000
2   Monday  01:30:00.000    17:01:00.000
3   Tuesday 23:00:00.000    00:30:00.000
4   Wednesday   01:00:00.000    15:54:00.000
5   Thursday    00:00:00.000    00:00:00.000
6   Friday  00:00:00.000    22:00:00.000
7   Saturday    00:00:00.000    21:30:00.000

您可以使用
weekday(mydate)
获取所需的值并按其订购

  • 工作日(mydate)将“日期”转换为工作日编号(
    Monday=0

    从tbl中选择工作日(mydate)、mydate、dayname(mydate) 按工作日(mydate)订购


这里的示例:

我相信您不能在Day之前订购,因为您不能仅使用DayOfWeek和DateTime的时间部分来真正形成DateTime

如果此表仅包含7条记录(一周中的每一天一条),那么您可能希望按照您想要的顺序重新排列记录id,这将允许您对它们进行排序并获得预期的结果

    CREATE TABLE Your_TableName
    (
    DayId int primary key,
    DaysName nvarchar(max)
    )

    INSERT INTO Your_TableName
    VALUES ('1', 'Sunday'),
    ('2', 'Monday'),
    ('3', 'Tuesday'),
    ('4', 'Wednesday'),
    ('5', 'Thursday'),
    ('6', 'Friday'),
    ('7', 'Saturday')

    --Move Sunday to the back to release the first id
    UPDATE Your_TableName
    SET DayId = '8'
    WHERE DayId = '1'

    --Don't technically have to do this, but you can move the rest of the records
    --to also reclaim that ID that was just released in order to have 1-7 Ids
    UPDATE Your_TableName
    SET DayId = DayId - 1

    select * from Your_TableName
    order by dayId
你的结果如下

    DayId   DaysName
    1   Monday
    2   Tuesday
    3   Wednesday
    4   Thursday
    5   Friday
    6   Saturday
    7   Sunday
使用以下SQL语句:

 Select dayname(date_column), date_column from table_name order by weekday(date_column);
您只需在SQL查询中使用
orderbyweekday(date\u列)

weekday()函数返回以下日期代码:

星期一。0

星期二。一,

星期三。二,

星期四。三,

星期五。四,

星期六


星期天。6

能否附加当前的SQL查询?如何从数据库中获取工作日-用于获取工作日的字段类型是什么?我不了解您的数据。请注意,您的表没有真正的内部顺序。如果您希望以特定顺序查看数据,那么您需要在select查询中使用正确的
order BY
子句。我有一个这样的表结构,现在我需要按日期名称对数据进行排序,即星期一在第一个位置,星期二在第二个位置,依此类推…字段名称Id、名称、startdate和enddateTable名称-记录