先日みなさまのおかげで、SQLについて問題解決・理解が深まることができました。
本当にありがとうございます。
その時に解決したSQLがこちらです。
T1とT2の指定したカラムの中でいくつ共通のカラムがあるかを計算するものです。
SQL
1SELECT CASE T1.N1 WHEN T2.N1 THEN 1 ELSE 0 END 2 + CASE T1.N1 WHEN T2.N2 THEN 1 ELSE 0 END 3 + CASE T1.N1 WHEN T2.N3 THEN 1 ELSE 0 END 4 + CASE T1.N2 WHEN T2.N1 THEN 1 ELSE 0 END 5 + CASE T1.N2 WHEN T2.N2 THEN 1 ELSE 0 END 6 + CASE T1.N2 WHEN T2.N3 THEN 1 ELSE 0 END 7 + CASE T1.N3 WHEN T2.N1 THEN 1 ELSE 0 END 8 + CASE T1.N3 WHEN T2.N2 THEN 1 ELSE 0 END 9 + CASE T1.N3 WHEN T2.N3 THEN 1 ELSE 0 END AS G 10ORDER BY G DESC
次に私がやりたいのが、こちらの結果を使ってUPDATEを行いたく、色々試しているのですが、調べ方などもわからず再び沼にハマってしまったので、ご質問させていただきました。
やりたいこと
・以上のsqlで取得した共通カラムの結果から、データを更新したい
上手く動かないのですが、なんとなくのイメージで作成したSQLを貼っておきます。
SQL
1UPDATE 2 T1 3SET 4 result = CASE WHEN G >= 1 THEN 1 ELSE 0 END, 5 result2 = CASE WHEN G = 3 THEN 1 WHEN G = 2 THEN 2 WHEN G = 1 THEN 3 ELSE 0 END 6 7FROM ( 8 SELECT CASE T1.N1 WHEN T2.N1 THEN 1 ELSE 0 END 9 + CASE T1.N1 WHEN T2.N2 THEN 1 ELSE 0 END 10 + CASE T1.N1 WHEN T2.N3 THEN 1 ELSE 0 END 11 + CASE T1.N2 WHEN T2.N1 THEN 1 ELSE 0 END 12 + CASE T1.N2 WHEN T2.N2 THEN 1 ELSE 0 END 13 + CASE T1.N2 WHEN T2.N3 THEN 1 ELSE 0 END 14 + CASE T1.N3 WHEN T2.N1 THEN 1 ELSE 0 END 15 + CASE T1.N3 WHEN T2.N2 THEN 1 ELSE 0 END 16 + CASE T1.N3 WHEN T2.N3 THEN 1 ELSE 0 END AS G 17 ORDER BY G DESC 18)
回答1件
あなたの回答
tips
プレビュー