Gunakan semula medan terkira dalam pertanyaan MySQL SELECT
Apabila berurusan dengan pertanyaan SQL yang besar dan kompleks, adalah sangat berfaedah untuk menggunakan semula medan yang dikira untuk mengelakkan pertindihan dan meningkatkan kebolehbacaan. Dalam MySQL, anda boleh menggunakan pembolehubah pengguna untuk tujuan ini.
Pertimbangkan contoh berikut:
<code class="language-sql">SELECT s.f1 + s.f2 as total_sale, s.f1 / total_sale as f1_percent FROM sales s</code>
Pertanyaan ini cuba menggunakan semula medan terkira total_sale dalam ungkapan f1_percent. Walau bagaimanapun, MySQL akan mengembalikan ralat "lajur tidak diketahui" kerana total_sale tidak ditakrifkan sebagai lajur dalam jadual jualan.
Untuk menyelesaikan masalah ini, kita boleh menggunakan operator := untuk memberikan nilai yang dikira kepada pembolehubah pengguna:
<code class="language-sql">SELECT @total_sale := s.f1 + s.f2 as total_sale, s.f1 / @total_sale as f1_percent FROM sales s</code>
Dengan menambah @ di hadapan nama pembolehubah, kami mencipta pembolehubah pengguna yang boleh dirujuk kemudian dalam pertanyaan. Dalam contoh ini, kami menetapkan nilai s.f1 s.f2 kepada pembolehubah @total_sale. Kemudian kita boleh menggunakan pembolehubah ini dalam ungkapan seterusnya seperti s.f1/@total_sale untuk mengira f1_percent.
Adalah penting untuk ambil perhatian bahawa walaupun kaedah ini membolehkan kami menggunakan semula medan yang dikira, ia juga mempunyai beberapa kaveat. Menurut dokumentasi MySQL, memberikan dan membaca nilai pembolehubah pengguna dalam pernyataan yang sama adalah tingkah laku yang tidak ditentukan dan mungkin menghasilkan keputusan yang tidak dijangka. Oleh itu, adalah disyorkan untuk menggunakan teknik ini dengan berhati-hati dan hanya apabila perlu.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan semula medan yang dikira dalam pertanyaan Mysql untuk meningkatkan kebolehbacaan dan mengelakkan pengulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!