2013-04-07 47 views
1

我有一个SQLite 3数据库SQLite的情况下,如果导致SUB QUERY

UPDATE Events 
    SET location = CASE 
     WHEN identifier = (SELECT id FROM users_db.exerciseLists WHERE patientId = ? AND complete = 1) 
     THEN 'yellow' 
     WHEN identifier = ? 
     THEN 'green' 
     WHEN date_start < datetime('now') 
     THEN 'red' 
     WHEN date_start > datetime('now') 
     THEN 'blue' 
     ELSE 'green' 
     END, 
    type = CASE 
     WHEN identifier = ? 
     THEN 'yes' 
     ELSE 'no' 
     END 

子查询

(SELECT id FROM users_db.exerciseLists WHERE patientId = ? AND complete = 1) 

返回不止一个结果下面的SQL查询,但上述情况查询仅使用第一个返回的结果。

我在做什么错?

感谢

回答

2

如果子查询返回不止一个结果,你想更新所有返回的结果,那么这将是更好地在语句中使用这样的:

WHEN identifier IN (SELECT id FROM users_db.exerciseLists WHERE patientId = ? AND complete = 1) 
+0

谢谢。完美运作。 – 2013-04-07 10:37:07

+0

不客气。 – 2013-04-07 10:39:12

+0

将id =标识符包含在子查询的where子句中可能会更好 – 2013-04-07 10:55:56

相关问题