我正在尝试从另一个表更新SQLIte表,我的语法似乎是错误的

时间:2019-01-16 22:55:33

标签: android database sqlite sql-update

我创建了一个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+""

                );                           

1 个答案:

答案 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)";