Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat ORA-00904 Apabila Menggunakan Ungkapan CASE dalam Klausa WHERE?

Bagaimana untuk Menyelesaikan Ralat ORA-00904 Apabila Menggunakan Ungkapan CASE dalam Klausa WHERE?

Barbara Streisand
Lepaskan: 2025-01-03 08:50:40
asal
198 orang telah melayarinya

How to Resolve ORA-00904 Error When Using CASE Expressions in WHERE Clauses?

Mengatasi ORA-00904: Menggunakan 'lajur ungkapan kes' dalam Klausa WHERE

Apabila cuba menggunakan ungkapan kes sebagai lajur dalam Klausa WHERE, ORA-00904 boleh timbul disebabkan oleh susunan logik pemprosesan SQL. Klausa WHERE dinilai sebelum klausa SELECT, menjadikannya mustahil untuk menggunakan lajur yang ditakrifkan dalam ungkapan kes SELECT.

Penyelesaian 1: Pertanyaan Bersarang

Untuk menyelesaikan isu ini , sertakan pertanyaan asal dalam bersarang pertanyaan:

SELECT *
FROM
  (SELECT ename, job,
    CASE deptno
      WHEN 10 THEN 'ACCOUNTS'
      WHEN 20 THEN 'SALES'
      ELSE 'UNKNOWN'
    END AS department
    FROM emp
  ) tmp
WHERE department = 'SALES';
Salin selepas log masuk

Penyelesaian 2: Pengiraan Pendua

Sebagai alternatif, salin ungkapan kes dalam keadaan WHERE itu sendiri:

SELECT ename, job,
  CASE deptno
    WHEN 10 THEN 'ACCOUNTS'
    WHEN 20 THEN 'SALES'
    ELSE 'UNKNOWN'
  END AS department
FROM emp
WHERE
  CASE deptno
    WHEN 10 THEN 'ACCOUNTS'
    WHEN 20 THEN 'SALES'
    ELSE 'UNKNOWN'
  END = 'SALES';
Salin selepas log masuk

Pertanyaan Ringkas

Untuk kes tertentu dikemukakan, pertanyaan yang dipermudahkan juga boleh digunakan:

SELECT ename, job, 'SALES' AS department
FROM emp
WHERE deptno = 20;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat ORA-00904 Apabila Menggunakan Ungkapan CASE dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan