我创建了一个databasehelper合同文件,因此我的SQLite语法与到目前为止所见的所有示例都不同,而且我似乎并没有正确地做到这一点。我将对使用的正确语法提供一些指导
我的代码在下面; +
字符串updt =“ UPDATE” + TABLE_NAME4 +“” +
"SET "
+ COLUMN_TAKEAWAY_PK_COST = ("SELECT " +COLUMN_PACK_COST+" " +
"FROM " + TABLE_NAME6+"" +
" WHERE " +COLUMN_PACK_TYPE+" = " +COLUMN_TAKEAWAY_PK_TYPE+" " +
" WHERE "
EXIST
"SELECT *
"FROM " + TABLE_NAME6+"" +
" WHERE " +COLUMN_PACK_TYPE+" = " +COLUMN_TAKEAWAY_PK_TYPE+""
);
答案 0 :(得分:0)
您遇到了一些问题。
第一个是当您只有一个WHERE子句时(尽管子查询中可以有where子句)。如果期望表达式的结果为true或false(1或更大或0),则可以使用AND或OR从两个结果中获取true或false的结果,因此您应该使用
WHERE result_of_expression AND result_of_the_other_expression
或 在result_of_expression和result_of_the_other_expression
第二个问题是您然后尝试使用子查询。子查询需要用括号(开头和)结尾。
第三个问题是 EXIST 不是关键字,它是 EXISTS 。
所以上面的可能是:-
String updt = "UPDATE " + TABLE_NAME4 +
" SET " + COLUMN_TAKEAWAY_PK_COST + " = ( " + //<<<<<<<<<< OPEN PARENTHESIS FOR SUBQUERY
" SELECT " + COLUMN_PACK_COST +
" FROM " + TABLE_NAME6 +
" WHERE " +COLUMN_PACK_TYPE+" = " + COLUMN_TAKEAWAY_PK_TYPE +
" AND EXISTS " + //<<<<<<<<<< AND INSTEAD OF WHERE and EXISTS INSTEAD OF EXISTS
"(" + //<<<<<<<<<< OPEN PARENTHESIS FOR SUB-SUBQUERY
" SELECT * " +
" FROM " + TABLE_NAME6 +
" WHERE " + COLUMN_PACK_TYPE + " = " + COLUMN_TAKEAWAY_PK_TYPE +
" ) " + //<<<<<<<<<< CLOSE PARENTHESIS FOR SUB-SUBQUERY
")" //<<<<<<<<<<< CLOSE PARENTHESIS FOR SUBQUERY
);
根据您的评论,您希望根据以下内容进行更简单的查询:-
String updatePack = "UPDATE FP_Master SET TakeAwayPkCost = (SELECT Pack_Cost FROM Take_Away_Pack_Details WHERE Pack_Type = TakeAwayPkType)";