Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat ORA-00904 Apabila Menggunakan Ungkapan CASE dalam Klausa WHERE?
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';
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';
Pertanyaan Ringkas
Untuk kes tertentu dikemukakan, pertanyaan yang dipermudahkan juga boleh digunakan:
SELECT ename, job, 'SALES' AS department FROM emp WHERE deptno = 20;
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!