【问题标题】:Where Clause in Sql AndroidSql Android 中的 Where 子句
【发布时间】:2014-04-09 18:11:52
【问题描述】:

我有一张如下图所示的表格

number  unit  Value     
 78      m     ss
 74      km    aa
 77      m     ww
 77      km    ee
 77      km    ii
 74      m     pp

我正在编写一个范围查询来检查单位并获取最接近的值。我正在使用 where 条件来检查单位和编号。

  cursor=db.rawQuery("SELECT * FROM "+TABLE_DOF+" WHERE units = '" + unit + "' AND ABS("+inputNumber+" - number)=(SELECT MIN(ABS("+inputNumber+" - number)) FROM "+TABLE_DOF+") AND ABS("+inputNumber+" - number<=5", null);

如果输入数字是79,单位是km,那么我会得到空行。

如果输入数字是79,单位是m,那么我会得到一行。

 number  unit  Value     
   78      m     ss

我想要的是,如果输入数字是 79,单位是 km,那么它应该返回给定输入数字的范围,即 -5 和 +5,如下表中的行

 number  unit  Value     
   77      km    ee
   77      km    ii

我们将不胜感激。谢谢你

【问题讨论】:

  • 这基本上不是您今天第三次发布有关此查询的问题了吗?
  • 应该总是在输入的 +-5 范围内返回,还是仅在没有完全匹配的情况下返回?
  • 听起来你需要一个 between 子句 stackoverflow.com/questions/3821923/…
  • 对不起,我是这个领域的新手,我正在尝试错误检查查询,到最后我需要完成这个,所以寻求帮助。跨度>
  • 但是他们已经给你一个远程查询的答案 - stackoverflow.com/questions/22927652/…

标签: android sql sqlite


【解决方案1】:

我没有完全理解你的问题,仍然按照我的理解
尝试这个。

WHERE ((number>(inputNumber-5)) AND (number

【讨论】:

  • 应该是ANDnumber&lt;(inputNumber+5)。此外,使用BETWEEN 可能会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
相关资源
最近更新 更多