Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite 3.7.12中的稍微复杂的条件选择_Android_Sql_Sqlite - Fatal编程技术网

Android SQLite 3.7.12中的稍微复杂的条件选择

Android SQLite 3.7.12中的稍微复杂的条件选择,android,sql,sqlite,Android,Sql,Sqlite,我有一个名为calls的表,其中包含以下记录 id number 1998 1234 1999 5678 2000 567890 2001 567890 2002 567890 2003 567890 2004 567890 2005 5645 2006 5612 我想选择所有符合以下2个条件的记录: 电话号码必须是567890 id位于number=567890的子选项中,但不是最大id。在这种情况下,2004 567890是例

我有一个名为calls的表,其中包含以下记录

id      number
1998    1234
1999    5678
2000    567890
2001    567890
2002    567890
2003    567890
2004    567890
2005    5645
2006    5612
我想选择所有符合以下2个条件的记录:

电话号码必须是567890 id位于number=567890的子选项中,但不是最大id。在这种情况下,2004 567890是例外。 因此,结果将是:

id      number
2000    567890
2001    567890
2002    567890
2003    567890
我试过这个:

select * FROM calls where number='567890' ORDER BY _id DESC LIMIT 10 OFFSET 1;
它在SQLiteSpy上工作,但在Android终端命令中不起作用,它显示了错误:near ORDER:syntax Error.,我尝试的是:

sqlite3 database.db "select * FROM calls where number='567890' ORDER BY _id DESC LIMIT 10 OFFSET 1;"
有时,number=567890的记录数量可能会有所不同,因此上述语句中的限制是无效的,如果它可以在REG search中使用与所有记录匹配的*等通配符?

这里有一种方法:

select c.*
from calls c
where c.number = '567890' and
      c.id <> (select max(c2.id) from calls c2 where c2.number = c.number);
报告说:

如果LIMIT表达式的计算结果为负值,则返回的行数没有上限

因此,要使用无限偏移:

SELECT * FROM calls WHERE number = '567890' ORDER BY _id DESC LIMIT -1 OFFSET 1;

显示准确的错误消息。是否存在_id列?该命令无法生成语法错误。您是否使用“复制+粘贴”来显示您正在使用的实际命令?@CL。向我显示错误:在订单附近,当我使用“删除”而不是“选择*”时,似乎“选择”很好。但是我还需要知道如何更改为删除。@njzk2实际上id是_id列,这有区别吗?对不起,我真的是一个新手。感谢limit-1技巧,但是当我在SQLite3命令上使用它时,它仍然向我显示错误:接近顺序:语法错误。我在kitkat 4.4.4 cm11下,我相信它使用SQLite 3.7.12。还有什么建议吗?谢谢。谢谢,即使我不知道c.*的确切含义,但它是有效的。还有一个问题,如果我把它改为DELETE,它会产生一个错误:靠近c:syntax error,我怎样才能使这个语句也能与DELETE一起工作呢?你只需要从调用中删除并更改后续的c。打电话。。