我正在使用c ++中的sqlite3库从* .sqlite文件中查询数据库。你能在sqlite3中编写一个查询语句,如:
char* sql = "select name from table id = (select full_name from second_table where column = 4);"
第二个语句应返回一个id,用第一个语句完成查询语句。
答案 0 :(得分: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
可能非常快
答案 1 :(得分:1)
另外,您可以使用SQLite admin(http://sqliteadmin.orbmu2k.de/)查看数据库并直接在其中进行查询(对测试等有用)。