0

*.sqlite ファイルからデータベースを照会するために、C++ で sqlite3 ライブラリを使用しています。sqlite3 で次のようなクエリ ステートメントを記述できますか。

char* sql = "select name from table id = (select full_name from second_table where column = 4);"

2 番目のステートメントは、最初のステートメントでクエリ ステートメントを完了するために ID を返す必要があります。

4

2 に答える 2

2

はい、できます。ネストされたクエリが複数の行を返さないことを確認してください。これを修正するには、ネストされたクエリの最後に LIMIT 1 を追加します。また、常に行を返すようにしてください。そうしないと、メイン クエリが機能しません。

ネストされたクエリで複数の行を一致させたい場合は、次INのようにいずれかを使用できます。

char* sql = "select name from table WHERE id IN (select full_name from second_table where column = 4);"

または使用できますJOIN

char* sql = "select name from table JOIN second_table ON table.id = second_table.full_name WHERE second_table.column = 4"

正しい列にインデックスを付けると、INメソッドは非常に遅くなる可能性があり、非常に高速になる可能性があることに注意してくださいJOIN

于 2010-02-13T02:04:28.420 に答える
1

補足として、SQLiteadmin ( http://sqliteadmin.orbmu2k.de/ ) を使用してデータベースを表示し、その中で直接クエリを作成できます (テストなどに役立ちます)。

于 2010-02-15T21:45:42.563 に答える