C++에서 sqlite3 라이브러리를 사용하여 * .sqlite 파일에서 데이터베이스를 쿼리합니다. 두 번째 문이 첫 번째 문으로 쿼리 문을 완료하는 ID를 반환해야합니다sqlite의 중첩 문
char* sql = "select name from table id = (select full_name from second_table where column = 4);"
: 당신은 sqlite3를 같은에서 쿼리 문을 작성할 수 있습니다.
C++에서 sqlite3 라이브러리를 사용하여 * .sqlite 파일에서 데이터베이스를 쿼리합니다. 두 번째 문이 첫 번째 문으로 쿼리 문을 완료하는 ID를 반환해야합니다sqlite의 중첩 문
char* sql = "select name from table id = (select full_name from second_table where column = 4);"
: 당신은 sqlite3를 같은에서 쿼리 문을 작성할 수 있습니다.
예, 중첩 된 쿼리가 두 개 이상의 행을 반환하지 않도록 할 수 있습니다. 이 문제를 해결하려면 LIMIT 1을 중첩 쿼리의 끝에 추가하십시오. 또한 항상 행을 반환하는지 확인하십시오. 그렇지 않으면 기본 쿼리가 작동하지 않습니다.
char* sql = "select name from table WHERE id IN (select full_name from second_table where column = 4);"
하거나 JOIN
사용할 수 있습니다 : 당신이 중첩 된 쿼리에서 여러 행과 일치 할 경우
는, 당신은과 같이, 하나 IN
사용할 수있는 IN
것을
char* sql = "select name from table JOIN second_table ON table.id = second_table.full_name WHERE second_table.column = 4"
주 방법이 매우 느릴 수 있으며 오른쪽 열에서 색인을 생성하면 JOIN
이 매우 빠를 수 있습니다.
O SQLiteadmin (http://sqliteadmin.orbmu2k.de/)을 사용하면 데이터베이스를보고 쿼리를 직접 작성할 수 있습니다 (테스트 등).
LIMIT 1을 추가하면 다른 오류가 보이지 않을 수 있습니다. 아마도 그의 쿼리는 오직 하나의 행만 리턴 할 것입니다. 그렇지 않은 경우 오류를 원할 수 있습니다 (!). – Joe
그것은 열 4와 일치하는 테이블에서 'full_name'을 반환합니다. 나는 'full_name'을 얻기 위해 for 루프와 같은 것을 사용할 필요가 있다고 생각합니다. – cpx
+1, 작동했습니다. :) – cpx