mysql查询,订购两个日期列并跟踪它来自的原始列

时间:2012-01-05 16:05:10

标签: mysql sorting

这是我的任务的简化版本。我有一个表,包含用户的进出时间戳。表列为:id,username,timeIn,timeOut。我想创建一个报告,按活动顺序排列或排除结果,并跟踪打印输出的输入或输出。到目前为止我唯一的想法是创建两个数组和inTimeArray和outTimeArray然后循环它们,

if (inTimeArray > outTimeArray) {
    print time in: timestamp;
} else {
print timeout:;
}

输出 约翰在:时间 露西:时间 史蒂夫:时间 露西:时间 joel in:时间 史蒂夫:时间 露西:时间 等

2 个答案:

答案 0 :(得分:1)

select *,
least(timein,timeout) as lower,
if(timein < timeout,'in_time','out_time') as description
from table
order by lower

答案 1 :(得分:1)

您可以在查询中使用case语句:

select
    id,
    username,
    timeIn,
    timeOut,
    case when timeIn > timeOut then timeIn else timeOut end as timestamp
from
    users

然后,您可以只比较timestamp = timeIn还是timeOut。此外,您可以添加另一列:

case when timeIn > timeOut then 0 else 1 end as IsTimeOut

无论哪种方式都有效。