Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Ralat ORA-00904 Apabila Menggunakan Alias dalam Klausa SQL WHERE?
Gunakan alias dalam klausa WHERE
Pertanyaan SQL yang direka untuk memaparkan bilangan baris dalam jadual yang tidak dikemas kini baru-baru ini menghadapi ralat ORA-00904 disebabkan penggunaan alias dalam klausa WHERE. Pengguna sedang mencari penyelesaian kepada masalah ini tanpa mengulangi fungsi DECODE kompleks dalam klausa WHERE.
Menggunakan alias secara langsung dalam klausa WHERE tidak boleh dilaksanakan kerana WHERE dilaksanakan sebelum SELECT, iaitu langkah terakhir pelaksanaan pertanyaan. Walau bagaimanapun, anda boleh menggunakan subkueri sebagai penyelesaian:
<code class="language-sql">SELECT * FROM ( SELECT A.identifier , A.name , TO_NUMBER(DECODE( A.month_no , 1, 200803 , 2, 200804 , 3, 200805 , 4, 200806 , 5, 200807 , 6, 200808 , 7, 200809 , 8, 200810 , 9, 200811 , 10, 200812 , 11, 200701 , 12, 200702 , NULL)) as MONTH_NO , TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE FROM table_a A , table_b B WHERE A.identifier = B.identifier ) AS inner_table WHERE MONTH_NO > UPD_DATE</code>
Pendekatan subkueri ini dengan berkesan membenarkan penapisan berdasarkan ungkapan alias tanpa menghadapi ralat awal.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat ORA-00904 Apabila Menggunakan Alias dalam Klausa SQL WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!