SQLiteのテーブル2つをつないで、一方の「最大値+1」をもう一方に書き込もうとしています。
テーブル contract
- id
- status 契約状況 1以外が対象
- count => bill.bill_countの最大数+1を入力しようとしています
テーブル bill
- id
- contract_id
- bill_count => 0,1,2,3,4,5,6 と支払回数が格納されています
アップデートのため下記のようなSQLを書きました
SQLite
1UPDATE c 2SET count = MAX(b.bill_count)+1 3FROM contract AS c 4LEFT JOIN bill AS b 5ON c.id = b.contract_id 6WHERE c.status <> '1' 7GROUP BY b.contract_id
しかし、実行すると「Error near "FROM": syntax error」が発生してしまいます。
selectによる表示は目的通り出力されます
SQLite
1SELECT c.*,MAX(b.bill_count)+1 2FROM contract as c 3LEFT JOIN bill as b 4ON c.id = b.contract_id 5WHERE c.status <> '1' 6GROUP BY b.contract_id
FROM周辺に問題があるようなのですが、どのように修正すればよいか分からずにいます。
よろしくおねがいします。
==追記(他に試した方法)==
SQLite
1/* 同じデータで埋められてしまいます */ 2UPDATE contract 3SET count = ( 4 SELECT MAX(b.bill_count)+1 5 FROM contract as c 6 LEFT JOIN bill as b 7 ON c.id = b.contract_id 8 WHERE c.status <> '1' 9 GROUP BY b.contract_id 10)
SQLite
1/* 応答がなくなり、ハングアップ状態 */ 2UPDATE contract 3SET count = ( 4 SELECT MAX(b.bill_count)+1 5 FROM contract as c 6 LEFT JOIN bill as b 7 ON c.id = b.contract_id 8 WHERE contract.id = b.contract_id 9 GROUP BY b.contract_id 10)
SQLite
1/* Error no such column: b.contract_id */ 2UPDATE contract 3SET count = 4( 5 SELECT MAX(b.bill_count)+1 6 FROM bill as b 7 GROUP BY b.contract_id 8) 9WHERE id = b.contract_id 10/* b.contract_id を bill.contract_id にするとエラーは bill.contract_id */
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。