Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

王林
王林ke hadapan
2023-06-01 23:40:052605semak imbas

Saya menghadapi masalah sebelum ini Terdapat dua jadual dalam pangkalan data mysql Satu jadual alamat menyimpan maklumat lokasi seperti wilayah dan bandar, dan jadual pengguna lain mempunyai tiga medan yang sepadan dengan tiga maklumat lokasi dalam jadual alamat. Format jadual yang sangat pelik), seperti yang ditunjukkan dalam gambar:

Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

Sekarang kita perlu menanyakan data dalam jadual pengguna dan menyimpan mengikut ke jadual pengguna Untuk nilai kawasan bandar, maklumat lokasi yang sepadan (nama) disoal dalam jadual alamat dan dipaparkan; >

Pertama sekali, kita perlu mendapatkan Untuk nilai tiga medan wilayah dan bandar dalam jadual pengguna, kaedah pertanyaan umum kami ialah

SELECT province,city,district FROM `user` WHERE id =1;

Ini agak mudah yang diperolehi ialah nilai satu baris dan tiga lajur, seperti yang ditunjukkan dalam rajah:

Ini adalah cara penulisan biasa, dan kemudian gunakan hasil ini sebagai syarat pertanyaan untuk tanya nama dalam jadual alamat.Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

Sudah tentu idea itu kelihatan bagus, tetapi hasil pertanyaan ini dibahagikan kepada Ia adalah tiga segmen, yang tidak sesuai untuk pertanyaan kami yang berikutnya keputusan dan kemudian proses dan pertanyaan lagi. Pada masa ini, kita perlu menggunakan dua fungsi SQL, CONCAT_WS dan CONCAT ditemui di Baidu. Saya tidak akan memperkenalkannya di sini:)

Jadi pernyataan pertanyaan kami boleh ditulis sebagai

dan hasilnya adalah seperti yang ditunjukkan dalam rajah:

SELECT CONCAT_WS(',',province,city,district) AS ids FROM `user` WHERE id =1;

Dengan hasil ini, kami pada asasnya boleh menanyakan maklumat alamat Begitu juga, apabila menanyakan maklumat alamat, kami juga melakukan penyambungan yang sepadan, jadi sql akhir adalah seperti ini Hasil ideal Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql

SELECT GROUP_CONCAT(`name`) FROM address WHERE id IN (SELECT CONCAT_WS(',',province,city,district) FROM `user` WHERE id =1);
adalah seperti yang ditunjukkan dalam rajah:

Tetapi sebenarnya kenyataan ini tidak dapat hasil yang kita inginkan kerana PILIH CONCAT_WS( ',',provinsi,bandar,daerah) DARI `user` WHERE id =1 Hasil pertanyaan ialah rentetan, tetapi rentetan itu tidak boleh digunakan sebagai syarat In dalam keadaan pertanyaan, jadi hasil pertanyaan bukan seperti yang kita mahukan Ya

Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql Menganalisis idea kami sekali lagi, tiada masalah. Jadi bagaimana kita boleh menggunakan rentetan ini sebagai syarat pertanyaan dan akhirnya mendapat hasil yang kita inginkan Menurut maklumat di Internet, keadaan pertanyaan Kandungan dalam hanya boleh berangka, jadi ia tidak? pertanyaan rentetan sokongan, jadi di sini kita juga memerlukan fungsi, instr Sejujurnya, ini adalah kali pertama saya tahu fungsi ini, saya hanya tahu sedikit tentang mysql dangkal, haha. Kemudian mari kita cuba kesan fungsi ini alamat boleh diubah suai mengikut keperluan perniagaan memang sangat berkuasa saya masih perlu belajar lebih lanjut pada masa hadapan

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pertanyaan penyambungan berbilang lajur dalam hasil pertanyaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam