Sintaks alternatif untuk menggabungkan beberapa baris individual
PERINGATAN: Posting ini akan membuat Anda lapar.
Diberikan:
Saya mendapati diri saya ingin memilih beberapa baris individual — bukan grup — dan bergabung dalam bidang tertentu.
Katakanlah Anda memiliki tabel id produk dan nama serta harganya:
+------------+--------------------+-------+
| product_id | name | price |
+------------+--------------------+-------+
| 13 | Double Double | 5 |
| 14 | Neapolitan Shake | 2 |
| 15 | Animal Style Fries | 3 |
| 16 | Root Beer | 2 |
| 17 | Lame T-Shirt | 15 |
+------------+--------------------+-------+
Maka Anda memiliki beberapa ajax schmancy mewah yang mencantumkan anak-anak anjing ini sebagai kotak centang.
Pengguna hippo lapar Anda memilih 13, 15, 16
. Tidak ada makanan penutup untuknya hari ini ...
Temukan:
Cara untuk meringkas pesanan pengguna Anda dalam satu baris, dengan mysql murni.
Larutan:
Gunakan GROUP_CONCAT
dengan para IN
klausa :
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary FROM product WHERE product_id IN (13, 15, 16);
Output yang mana:
+------------------------------------------------+
| order_summary |
+------------------------------------------------+
| Double Double + Animal Style Fries + Root Beer |
+------------------------------------------------+
Solusi Bonus:
Jika Anda juga ingin harga total, masukkan SUM()
:
mysql> SELECT GROUP_CONCAT(name SEPARATOR ' + ') AS order_summary, SUM(price) AS total FROM product WHERE product_id IN (13, 15, 16);
+------------------------------------------------+-------+
| order_summary | total |
+------------------------------------------------+-------+
| Double Double + Animal Style Fries + Root Beer | 10 |
+------------------------------------------------+-------+
PS: Permintaan maaf jika Anda tidak memiliki In-N-Out di dekatnya ...