私は次のクエリを持っている:ORA-00905:CASEのTHEN句のキーワードがありませんか?
SELECT name,tid FROM table_name WHERE status=1 AND
CASE
WHEN EXISTS (SELECT 1 FROM table_name WHERE name='name1' AND tid='tid1' AND status=1)
THEN name='name1' AND tid='tid1'
ELSE name='name2' AND tid='tid2'
END;
上記のクエリは、postgresのとMySQLのために動作しますが、Oracleには、私はこのエラーを取得:
THEN name='name1' AND AND tid='tid1'
*
ERROR at line 4:
ORA-00905: missing keyword
誰かが私に教えてくださいすることができいただきました!ここで間違って、どのように修正するにはすべての3つののために働くのクエリ - のPostgres、MySQLとOracle
それは更新ではなく選択クエリです。そのようなフィールドに値を割り当てることはできません。 –
値を割り当てていないので、 'name =" name1 "AND tid =" tid1 "'はWHERE句の一部です。そして、クエリはmysqlとpostgresで動作しています。問題は私が直面しているのはoracleです。 – user2713255
はい、あります。あなたの 'name =" name1 "'は "決定"文脈にはなく、 "then"の中にあります。ここでcase文の結果の値を返すべきです。 –