Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQL查询错误-我做错了什么?_Android_Sql_Sqlite - Fatal编程技术网

Android SQL查询错误-我做错了什么?

Android SQL查询错误-我做错了什么?,android,sql,sqlite,Android,Sql,Sqlite,下面是我正在尝试执行的SQL更新: UPDATE T SET T.CurrentStopNumber = TS.CurrentStopNumber FROM Trip T INNER JOIN (SELECT TripId, MIN(StopNumber) CurrentStopNumber FROM TripStop WHERE TripId = '106504' AND (IsPickup = 1 OR

下面是我正在尝试执行的SQL更新:

UPDATE T
  SET T.CurrentStopNumber = TS.CurrentStopNumber 
 FROM Trip T 
INNER JOIN (SELECT TripId, MIN(StopNumber) CurrentStopNumber
             FROM TripStop
            WHERE TripId = '106504'
              AND (IsPickup = 1 OR IsDrop = 1)
              AND StopNumber > (SELECT COALESCE(max(StopNumber), 0) 
                                  FROM TripUpdate 
                                 WHERE TripId = '106504' 
                                   AND Type = 2)) TS ON T.TripId = TS.TripId
我在第二行遇到错误:

 /* Error message: SQL script is wrong mismatched input . expecting "EQ" */

我熟悉SQL Server,我相信它可以在SQL Server上正常运行。子查询运行良好,并按预期返回1行。我只需要用这个值更新表。怎么了?

我认为您不应该为设置的字段指定表,因为数据库已经知道要更新哪个表:

SET CurrentStopNumber = TS.CurrentStopNumber
IIRC,这在SQL Server中也是不允许的。

使用:

UPDATE TRIP
   SET currentstopnumber = (SELECT MIN(ts.stopnumber)
                              FROM TRIPSTOP ts
                             WHERE ts.tripid = TRIP.tripid
                               AND ts.tripid = '106504'
                               AND 1 IN (ts.ispickup, ts.isdrop)
                               AND ts.stopnumber > (SELECT COALESCE(MAX(tu.stopnumber), 0)
                                                      FROM TRIPUPDATE tu
                                                     WHERE tu.tripid = ts.tripid
                                                       AND tu.type = 2)
                          GROUP BY ts.tripid)
 WHERE EXISTS (SELECT NULL 
                 FROM TRIPSTOP ts
                WHERE ts.tripid = TRIP.tripid
                  AND ts.tripid = '106504'
                  AND 1 IN (ts.ispickup, ts.isdrop)
                  AND ts.stopnumber > (SELECT COALESCE(MAX(tu.stopnumber), 0)
                                         FROM TRIPUPDATE tu
                                        WHERE tu.tripid = ts.tripid
                                          AND tu.type = 2))

JOIN更可取,但语法不受广泛支持。

它在SQL Server中工作,现在即使我删除了它也不工作。似乎JOIN不受支持。我按照你的建议做了,只是修改了WHERE部分:UPDATE Trip SET currentstopnumber=SELECT MINStopNumber FROM TripStop,其中TripId='106504'和IsPickup=1或IsDrop=1,StopNumber>SELECT COALESCEmaxStopNumber,0 FROM TripUpdate,其中TripId='106504',Type=2,其中TripId='106504'