1

SQLite 3 データベースに次の SQL クエリがあります

  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) 

複数の結果を返しますが、上記のケース クエリは最初に返された結果のみを使用しています。

私は何を間違っていますか?

ありがとう

4

1 に答える 1

2

サブクエリが複数の結果を返し、返されたすべての結果を更新する場合は、次のように IN ステートメントを使用することをお勧めします。

WHEN identifier IN (SELECT id FROM users_db.exerciseLists WHERE patientId = ? AND complete = 1)
于 2013-04-07T10:34:07.800 に答える