mysql - 排序规则与嵌套选择的非法混合

标签 mysql collation

我有一个 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 小时)

这会返回错误: #1267 - 操作“>”时非法混合排序规则 (utf8_general_ci,COERCIBLE) 和 (latin1_swedish_ci,NUMERIC)

关于如何纠正此问题或仅显示过去 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)

最佳答案

删除InTime周围的撇号,即

where geofence <>'' and InTime >  DATE_SUB(NOW(), INTERVAL 26 HOUR)

关于mysql - 排序规则与嵌套选择的非法混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15571579/

相关文章:

mysql - 如何配置binlog获取User-Information?

mysql - 如何才能不重复地复制表记录?

MySQL 按其他表中的值排序

MySQL更改数据库排序规则

mysql - 哪个 MySQL 归类比较例如é 和 e 相等?

php - 使用 foreach() 更新 MySQL 表

php - WordPress 搜索查询不起作用

php 正则表达式匹配类似于字母。又名 u=ü 或 ê=é=è=e

SQLite 3 : Character Issue While Ordering By Records

javascript - 自定义 Intl.Collat​​ors?