-1

我的数据库是这样的:

CREATE TABLE IF NOT EXISTS patienttestdetail s(
    ptdid INTEGER PRIMARY KEY AUTOINCREMENT,
    pid INTEGER,
    date TEXT,
    sugarlevel INTEGER, 
    FOREIGN KEY(pid) REFERENCES patientdetails(id))

该脚本创建下表。

ptdid  pid     date      sugarlevel 

1       1    12/05/2013      125
2       2    12/06/2013      325 
3       1    12/41/2012      125 
4       3    08/12/2012      135
5       2    04/05/2012      135 
6       1    05/12/2012      135 

输入数据后,我现在想选择 pid=2 的最后一行。

我写了这样的代码:

cursor3=database.rawQuery("SELECT * FROM patienttestdetails WHERE pid="+patientId+" AND ptdid=(+SELECT MAX(ptdid) FROM patienttestdetails+)", null);

在上面的查询中, patientId=2 很好,但会导致运行时异常。

错误:

sqlite.SqliteException:靠近“&”:语法错误:,编译时:SELECT * FROM patienttestdetails WHERE pid=2 AND ptdid =(+SELECT MAX(ptdid) FROM patienttestdetails+)

4

2 回答 2

0

不是&&and ,还有那里+ +在做什么

    cursor3=
           database.rawQuery("SELECT * 
                              FROM patienttestdetails 
                              WHERE pid="+patientId+" and  ptdid in (
                                SELECT distinct MAX(ptdid) 
                                FROM patienttestdetails
                             )", null);

在将查询添加到代码之前,您必须首先在 sqlite 数据库管理器或其他管理器中使用数据库执行它,如果它执行,那么您应该在代码上执行它

在此处了解有关 sqlite的更多信息

于 2013-08-08T09:35:59.053 回答
0

您应该坚持一般的编码风格并使用AND而不是在 SQL 中也不使用。and&&

显然,您想获取最新的行并尝试使用子选择和MAX().

重写您的查询以使用ORDER BYand LIMIT

"SELECT *
 FROM patienttestdetails
 WHERE pid=" + patientId + "
 ORDER BY ptdid DESC
 LIMIT 1"

......会更有意义。

于 2013-08-08T09:39:23.473 回答