【问题标题】:sqLite - GROUP BY in modified columns with CASTsqLite - 使用 CAST 修改列中的 GROUP BY
【发布时间】:2013-11-13 10:31:01
【问题描述】:

我正在开发 Android SQLite(使用 Galaxy s2 进行测试) 我解决不了这个问题

我有一个这样的数据库:

COORDINATES
id latitude   longitude
1  37.996163  -116.644592
2  37.996163  -116.644592
3  37.957507  -116.67467
4  36.370157  -91.156311

我运行查询:

select CAST((latitude*10) AS UNSIGNED) AS lat, CAST((longitude*10) AS UNSIGNED) AS lon from coordinates group by lat,lon

我希望:

lat  lon
379  -1166
363  -911

相反,我得到:

lat  lon
379  -1166
379  -1166
363  -911

对未被 CAST 修改的值执行“分组依据” 我做错了什么? mysql 上的相同查询完美运行。

谢谢

【问题讨论】:

    标签: android sqlite group-by


    【解决方案1】:

    sqlite 没有 UNSIGNED 数据类型,并且强制转换它并没有真正做任何事情。这些值是浮点数,直到您调用例如Cursor getInt() 将它们转换为整数。

    投射到例如INTEGER 改为:

    sqlite> create table coordinates(id integer primary key, latitude, longitude);
    sqlite> insert into coordinates values(1,37.996163,-116.644592),(2,37.996163,-116.644592),(3,37.957507,-116.67467),(4,36.370157,-91.156311);
    sqlite> .head on
    sqlite> select CAST((latitude*10) AS UNSIGNED) AS lat, CAST((longitude*10) AS UNSIGNED) AS lon from coordinates group by lat,lon;
    lat|lon
    363.70157|-911.56311
    379.57507|-1166.7467
    379.96163|-1166.44592
    sqlite> select CAST((latitude*10) AS INTEGER) AS lat, CAST((longitude*10) AS INTEGER) AS lon from coordinates group by lat,lon;
    lat|lon
    363|-911
    379|-1166
    sqlite> 
    

    【讨论】:

      【解决方案2】:

      试试这个,我不确定这是否可行,但我知道 select 子句中的更改在 where、group 中不起作用...所以试试这个

      select CAST((latitude*10) AS UNSIGNED) AS lat, CAST((longitude*10) AS UNSIGNED) AS lon
      from coordinates 
      group by CAST((latitude*10) AS UNSIGNED), CAST((longitude*10) AS UNSIGNED)
      

      【讨论】:

      • 设置“整数”而不是“无符号”效果很好。我可以这样使用你的建议:从坐标组中选择 MAX(id) by CAST((latitude*10) AS INTEGER), CAST((longitude*10) AS INTEGER)
      猜你喜欢
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2021-12-24
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多