このSQLを手伝ってもらえますか?SQL Update with CASE
UPDATE VERSION
SET VERSION_STATUS_ID = IF((SELECT COUNT(*) from VERSION where KEY = 'ABC') > 1, 5, 6)
WHERE VERSION_ID = 1;
エラーレポート - SQLエラー:ORA-00907:欠落している右括弧 00907. 00000 - "不足している右括弧"
おかげ
このSQLを手伝ってもらえますか?SQL Update with CASE
UPDATE VERSION
SET VERSION_STATUS_ID = IF((SELECT COUNT(*) from VERSION where KEY = 'ABC') > 1, 5, 6)
WHERE VERSION_ID = 1;
エラーレポート - SQLエラー:ORA-00907:欠落している右括弧 00907. 00000 - "不足している右括弧"
おかげ
CASE
表現を使用します
UPDATE VERSION
SET VERSION_STATUS_ID = CASE WHEN (SELECT COUNT(*) from VERSION where KEY = 'ABC') > 1
THEN 5 ELSE 6 END
WHERE VERSION_ID = 1;
を
ありがとう!できます :) – GGG
EXISTS
は通常、サブクエリでCOUNT(*)
より効率的です。あなたは、テーブル内で一意のID列を持っている場合は、あなたが使用することができます。
UPDATE VERSION v
SET VERSION_STATUS_ID = (CASE WHEN EXISTS (SELECT 1
FROM VERSION v2
WHERE v2.KEY = 'ABC' AND
v2.VERSION_ID <> v.VERSION_ID
) > 1
THEN 5 ELSE 6
END)
WHERE VERSION_ID = 1;
をこれはVERSION_ID
が一意であることを前提としています。このような明示的に宣言された列がない場合は、代わりにROWID
を使用できます。
ケースの文を使用する –
@ Ryan Jarlhはあなたに言うでしょう、実際には 'CASE' _expression_です。 –
CASEは標準のSQLであり、ほぼすべてのデータベースで動作するため、あなたの友人です:http://modern-sql.com/feature/case –