FOR XML PATH vs group_concat คำสั่งกรุ๊ป ง่ายๆที่ตอบโจทย์

 

Table test

name  value 
A 2
A 3
B 4
B 5
B 6
C 3
C 4

จากตารางข้างต้น ต้องการให้คิวรี่แล้วได้ผลลัพธ์  เป็น Group by name และเรียงข้อมูล value ใหม่ตามตาราง ที่มีเครื่องหมาย จุลภาคคั่นอยู่ (,)

A

B

C

1,2,3

4,5,6

3,4

ซึ่งคำสั่งในการใช้งานของ MSSQL SERVER กับ MYSQL นั้นจะไม่เหมือนกันคือ
– รูปแบบคำสั่งใน MSSQL SERVER จะใช้คำสั่ง  FOR XML PATH ดังนี้
select t2.name,   STUFF((SELECT distinct ','+ Cast(t.value as varchar)
FROM test t where t.name = t2.name FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '') as value
from test t2 
group by t2.name

ผลการคิวรี่แบบ FOR XML PATH

 

– รูปแบบคำสั่งใน MYSQL จะใช้ group_concat ดังนี้
select  Name,group_concat(`Value` separator ',') as value
from  test  group by Name 

ผลการคิวรี่แบบ group_concat

ซึ่งเมื่อ query ข้อมูลแล้ว ก็จะได้ข้อมูลตามที่เราต้องการ

Comments

comments

You may also like...

ใส่ความเห็น