相关疑难解决方法(0)

Android SQLite查询 - 获取最新的10条记录

我在我的Android应用程序中保存了一个数据库,并希望检索插入数据库的最后10条消息.

我用的时候:

Select * from tblmessage DESC limit 10;
Run Code Online (Sandbox Code Playgroud)

它给了我10条消息,但来自TOP.但我想要最后 10条消息.可能吗?

假设整个表数据是 -

1,2,3,4,5....30
Run Code Online (Sandbox Code Playgroud)

我写了查询 select * from tblmessage where timestamp desc limit 10

表明 30,29,28...21

但我希望序列为 - 21,22,23...30

sql sqlite android android-sqlite

23
推荐指数
3
解决办法
4万
查看次数

指定ContentProvider查询的限制/偏移量

我正在尝试让我的ContentResolver运行此查询:

select * from myTable limit 1 offset 2
Run Code Online (Sandbox Code Playgroud)

ContentResolver中唯一的查询方法是:

resolver.query(uri, projection, selection, selectionArgs, sortOrder);
Run Code Online (Sandbox Code Playgroud)

我试过了:

final Cursor c = resolver.query(
        MyTable.CONTENT_URI,
        MyTable.PROJECTION,
        " ? ?",
        new String[] {"1", "2"},
        null);
Run Code Online (Sandbox Code Playgroud)

这只是抛出一个IllegaLArgumentException.实现这一目标的正确方法是什么?

android android-contentprovider

17
推荐指数
3
解决办法
1万
查看次数

SQLite3(或通用SQL)检索查询结果的第n行

关于SQLite3的快速问题(也可能是一般的SQLite)

如何检索查询结果的第n行?

row_id(或任何索引)对我的情况不起作用,因为表包含带数字的列.根据一些数据,查询需要未排序的数据或按asc/desc标准排序.

但我可能需要快速检索结果的第2行和第5行.

所以除了现在用计数器实现sqlite3_step()== SQLITE_ROW之外,我不知道如何继续这个.

由于性能问题,我不太喜欢这个解决方案.所以,如果有人可以提出一个值得高度赞赏的提示.

关心大卫

mysql sql sqlite

13
推荐指数
1
解决办法
7939
查看次数

带偏移的android sqlite查询不返回所需的行

我正在使用以下代码获取通知列表(总行数为21):

List<Notification> list = new ArrayList<Notification>();
Cursor c = _db.query(TABLE_NAME, COL_ALL, null, null, null, null, order, get_limitStr(offset));
if(c != null && c.moveToFirst())
{
    while(!c.isAfterLast())
    {
        Notification model = cursorToModel(c);
        if(model != null)
        {
            list.add(model);
        }
        c.moveToNext();
    }
    c.close();
}
Run Code Online (Sandbox Code Playgroud)

并且生成的offset = 0的查询是

SELECT Id, Token, Title, Read, Message, Image, CreateDate, CreateDateFA FROM Notifications ORDER BY CreateDate DESC LIMIT 20,0
Run Code Online (Sandbox Code Playgroud)

并且它按预期工作并返回20行,当我将偏移量增加1(偏移= 1)时,它只返回1行,这是正确的,但问题是当偏移量大于1时,查询将是

SELECT Id, Token, Title, Read, Message, Image, CreateDate, CreateDateFA FROM Notifications ORDER BY CreateDate DESC LIMIT 20,2 …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-sqlite

5
推荐指数
1
解决办法
5354
查看次数

如何在sqlite IPHONE中获取rowNum like列

我有一个这样的Sqlite数据库表(没有升序)

在此输入图像描述

但是我需要按名称升序顺序检索表,当我按升序设置它时,rowId按照混乱的顺序改变如下

在此输入图像描述

但我每次都需要按升序检索一些有限数量的联系人5

Aaa - EeeeFfff-Jjjjj ......

但是要限制像0-5 5-10 ....**它可以使用rowid,因为它们是混乱的顺序

所以我需要另一个列,如(oracle中的rowNum),按顺序为1234567 ...每次都如下

在此输入图像描述

如何使用现有列检索该列

Note: WE DONTE HAVE ROWNUM LIKE COLUMN IN SQLITE

sql sqlite iphone oracle objective-c

4
推荐指数
2
解决办法
1万
查看次数

SQL计算最多书籍的作者

我有一个书籍表、一个作者表和一个“链接器”表(作者/书籍之间的多对多链接)。

如何找到书籍数量最多的作者?

这是我的架构:

书籍:rowid,名称

作者:rowid、姓名

book_authors:rowid、book_id、author_id

这就是我想出的:(但它不起作用)

SELECT count(*) IN book_authors 
WHERE (SELECT count(*) IN book_authors 
       WHERE author_id = author_id)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想要一份前 100 位作者的报告,例如:

 author_name      book_count
 -----------------------------------
 Johnny           25
 Kelly            12
 Ramboz           10
Run Code Online (Sandbox Code Playgroud)

我需要某种形式的加入吗?最快的方法是什么?

sql sqlite select join count

4
推荐指数
1
解决办法
9847
查看次数

如何在python中多线程SQL查询,以便获得所有查询的结果

有没有办法使用线程同时执行 SQL 查询,这样我就可以减少下面代码的处理时间?有没有更好的方法可以在不使用 pandas 模块的情况下执行与下面相同的结果?鉴于我正在使用的数据集的大小,我无法将整个数据集存储在内存中,我发现循环遍历 SELECT * FROM 语句的行并将它们与我正在查询的列表进行比较会增加处理时间。

# DATABASE layout
#  _____________________________________________________________
# |     id      |         name       |        description       |
# |_____________|____________________|__________________________|
# |        1    |         John       |       Credit Analyst     |
# |        2    |         Jane       |          Doctor          |
# |      ...    |          ...       |            ...           |
# |  5000000    |       Mohammed     |         Dentist          |
# |_____________|____________________|__________________________|

import sqlite3


SEARCH_IDS = [x for x in range(15000)]
DATABASE_NAME = 'db.db'

def chunks(wholeList, chunkSize=999):
    """Yield successive n-sized chunks from wholeList.""" …
Run Code Online (Sandbox Code Playgroud)

python sqlite multithreading

3
推荐指数
1
解决办法
8569
查看次数

使用 LIMIT 通过 SQLite 进行分页

我正在编写自己的 SQLIteBrowser,并且有最后一个问题,这显然在网络上经常讨论,但似乎没有一个好的通用解决方案。

所以目前我存储用户输入的SQL。每当我需要获取行时,我都会通过在 SQL 末尾添加“Limit n, m”来执行 SQL。

对于我主要使用的普通 SQL,这似乎已经足够了。但是,如果我想在查询中使用 limit 自己,这显然会给出错误,因为生成的 sql 可能如下所示:

 select * from table limit 30 limit 1,100
Run Code Online (Sandbox Code Playgroud)

这显然是错误的。有更好的方法来做到这一点吗?

我的想法是,我可以扫描 SQL 并检查是否已经使用了限制子句,然后忽略它。当然它不是那么简单,因为如果我有这样的sql:

 select * from a where a.b = ( select x from z limit 1)
Run Code Online (Sandbox Code Playgroud)

显然在这种情况下它仍然应该应用我的限制,所以我可以从末尾扫描字符串并查看是否存在限制。我现在的问题是,这有多可行。由于我不知道 SQL 解析器是谁工作的,所以我不确定 LIMIT 是否必须位于 SQL 的末尾,或者末尾是否还可以有其他命令。

我用order byand测试了它,如果不是最后,group by我会得到 SQL 错误,所以我的假设似乎是正确的。limit

sql sqlite limit

2
推荐指数
1
解决办法
1万
查看次数