【发布时间】:2013-03-22 13:29:07
【问题描述】:
我有一个 MySQL 查询,有几个嵌套选择。如下:
我的内部查询,返回两列:
` MIN( PreQuery.updatetime ) as InTime`
`MAX( PreQuery.updatetime ) as OutTime`
这些是日期时间格式,2013-03-22 12:04:06
我只想返回过去 26 小时内的日期时间,因此请使用 where 子句:
'InTime'> DATE_SUB(NOW(), INTERVAL 26 HOUR)
这会返回错误:
#1267 - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation '>'
关于如何更正此问题或仅显示过去 26 小时的数据的任何想法?一如既往的感谢。
select * from (select
PreQuery.callingname,
PreQuery.geofence,
PreQuery.GroupSeq,
MIN( PreQuery.`updatetime` ) as InTime,
MAX( PreQuery.`updatetime` ) as OutTime
from
( select
v_starting.callingname,
v_starting.geofence,
v_starting.`updatetime`,
@lastGroup := @lastGroup + if( @lastAddress = v_starting.geofence
AND @lastVehicle = v_starting.callingname, 0, 1 ) as GroupSeq,
@lastVehicle := v_starting.callingname as justVarVehicleChange,
@lastAddress := v_starting.geofence as justVarAddressChange
from
v_starting,
( select @lastVehicle := '',
@lastAddress := '',
@lastGroup := 0 ) SQLVars
order by
v_starting.`updatetime` ) PreQuery
Group By
PreQuery.callingname,
PreQuery.geofence,
PreQuery.GroupSeq) parent
where geofence <>'' and 'InTime'> DATE_SUB(NOW(), INTERVAL 26 HOUR)
【问题讨论】:
-
首先,您可以在查询中的每个表上设置相同的排序规则。
-
谢谢,但只引用了一张表。