2010-02-13 73 views
0

我正在使用C++中的sqlite3庫從* .sqlite文件中查詢數據庫。你可以寫在sqlite3的像一個查詢語句:sqlite中的嵌套語句

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

第二條語句應該返回一個id完成與第一條語句的查詢語句。

回答

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可以非常快,如果你在右邊的列索引

+0

添加一個LIMIT 1可能會掩蓋其他錯誤;也許他的查詢只能返回一行。如果沒有,你可能想要(!)一個錯誤。 – Joe 2010-02-13 02:05:35

+0

它從表匹配列4返回'full_name'。我想我需要使用類似for循環來獲取每個'full_name'。 – cpx 2010-02-13 02:39:18

+0

+1,它工作:) – cpx 2010-02-13 03:09:53

1

O在旁註中,您可以使用SQLiteadmin(http://sqliteadmin.orbmu2k.de/)查看數據庫並直接在其中進行查詢(對於測試等有用)。