-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) FROMpatienttestdetails+)

4

2 に答える 2

0

一般的なコーディング スタイルに固執しAND、代わりに使用する必要がandあり&&、SQL でも使用されません。

明らかに、最新の行を取得して、サブセレクトとMAX().

ORDER BYandを使用するようにクエリを書き直しますLIMIT

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

...もっと理にかなっています。

于 2013-08-08T09:39:23.473 に答える
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 に答える