使用ASC和DESC在MySql中导致错误的结果

时间:2014-05-28 02:19:42

标签: mysql sql

我查询搜索最新进展。

此查询显示结果为升序

Select VIDLEGENDA
FROM T_mst_activity inner join T_dtl_activity on t_mst_activity.vidactivity = t_dtl_activity.vidactivity WHERE vKodeProject = 'C002-1' 
order BY dtimeactivity asc, vworkhour asc

enter image description here

最后3个是A.01,A.02,B.01

我想选择最后一个结果,所以我使用Descending就像这个图像

Select VIDLEGENDA
FROM T_mst_activity inner join T_dtl_activity on t_mst_activity.vidactivity = t_dtl_activity.vidactivity WHERE vKodeProject = 'C002-1' 
order BY dtimeactivity desc, vworkhour desc

enter image description here

但是顶部的3个结果是B.01,A.01,A.02。

但结果应为B.01,A.02,A.01。

如果我的查询有问题?

这是我的结构表:

T_mst_Activity enter image description here

T_dtl_Activity enter image description here

对于罗纳德: 这个选择vidlegenda,dtimeactivity和vworkhour与ASC enter image description here

这个选择vidlegenda,dtimeactivity和vworkhour与DESC enter image description here

1 个答案:

答案 0 :(得分:0)

你可以看到 desc 第2行和第3行 相同的dtimeactivity和同样的vworkhour 不是吗?因为 vidlegenda不按顺序所以默认顺序是asc,当条件满足相同的dtimeactivity和相同的vworkhour ..所以你必须给出3个顺序..第一个 dtimeactivity 然后< strong> vworkhour ,最后 vidlegenda desc

试试这个:

Select VIDLEGENDA
FROM T_mst_activity inner join T_dtl_activity on t_mst_activity.vidactivity = t_dtl_activity.vidactivity WHERE vKodeProject = 'C002-1' 
order BY dtimeactivity desc, vworkhour desc, VIDLEGENDA desc