sqlite中的嵌套语句

时间:2010-02-13 01:56:43

标签: c++ sqlite nested-statement

我正在使用c ++中的sqlite3库从* .sqlite文件中查询数据库。你能在sqlite3中编写一个查询语句,如:

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

第二个语句应返回一个id,用第一个语句完成查询语句。

2 个答案:

答案 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/)查看数据库并直接在其中进行查询(对测试等有用)。