Saya perlu menjalankan kueri seperti:
SELECT p.id, p.name,
(SELECT name
FROM sites s
WHERE s.id = p.site_id) AS site_list
FROM publications p
Tapi saya ingin sub-pilih untuk mengembalikan daftar yang dipisahkan koma, bukan kolom data. Apakah ini bahkan mungkin, dan jika demikian, bagaimana?
sql
mysql
concatenation
Glen Solsberry
sumber
sumber
GROUP_CONCAT(CAST(s.name AS CHAR))
atau yang lain itu hanya akan mengembalikan sesuatu yang sama sekali tidak berguna seperti[BLOB - 20 Bytes]
.Alih-alih menggunakan
group concat()
Anda bisa menggunakan hanyaconcat()
sunting ini hanya berfungsi di mySQL; Oracle concat hanya menerima dua argumen. Di oracle Anda dapat menggunakan sesuatu seperti select col1 || ',' || col2 || ',' || col3 sebagai foobar dari table1; di sql server Anda akan menggunakan + bukan pipa.
sumber
Sekarang hanya saya yang menemukan situasi ini dan menemukan beberapa fitur yang lebih menarik
GROUP_CONCAT
. Saya harap detail ini akan membuat Anda merasa menarik.GROUP_CONCAT sederhana
Hasil:
GROUP_CONCAT dengan DISTINCT
Hasil:
GROUP_CONCAT dengan DISTINCT dan ORDER BY
Hasil:
GROUP_CONCAT dengan DISTINCT dan SEPARATOR
Hasil:
GROUP_CONCAT dan Menggabungkan Kolom
Hasil:
GROUP_CONCAT dan Hasil yang Dikelompokkan Asumsikan bahwa yang berikut adalah hasil sebelum digunakan
GROUP_CONCAT
Hasil:
sumber
Dalam kasus saya, saya harus menggabungkan semua nomor akun orang yang nomor ponselnya unik. Jadi saya telah menggunakan permintaan berikut untuk mencapainya.
Hasil Permintaan di bawah ini:
sumber