Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เชื่อมค่าสองค่าจากคอลัมน์เดียวกันโดยมีเงื่อนไขต่างกันใน MySQL


สำหรับสิ่งนี้ คุณสามารถใช้ group_concat() กับฟังก์ชันการรวม ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1869 ( Id int, Subject varchar(20 ), Name varchar(20) );Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable1869 (100, 'MySQL', 'John'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.00 วินาที) mysql> ลงในค่า DemoTable1869 (100, 'MongoDB', 'Smith'); แบบสอบถาม ตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที)mysql> แทรกลงในค่า DemoTable1869 (101,'MySQL', 'Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1869 (101, 'MongoDB', 'สีน้ำตาล');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.00 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก * จาก DemoTable1869;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+------+---------+-------+| รหัส | เรื่อง | ชื่อ |+------+---------+-------+| 100 | MySQL | จอห์น || 100 | MongoDB | สมิธ || 101 | MySQL | คริส || 101 | MongoDB | สีน้ำตาล |+------+---------+------+4 แถวในชุด (0.00 วินาที)

นี่คือการสืบค้นเพื่อเชื่อมค่า 2 ค่าจากคอลัมน์เดียวกันโดยมีเงื่อนไขต่างกัน -

mysql> เลือก Id,concat(StudentFirstName,'',StudentLastName) จาก ( select Id, max(case when Subject='MySQL' แล้ว Name end) เป็น StudentFirstName, max(case when Subject='MongoDB' then Name end) ) เป็น StudentLastName จากกลุ่ม DemoTable1869 โดย Id )tbl;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+------+-------------------------------------- ------+| รหัส | concat(StudentFirstName,'',StudentLastName) |+------+-------------------------------- --------------+| 100 | จอห์น สมิธ || 101 | คริสบราวน์ |+------+-------------------------------------- -----+2 แถวในชุด (0.00 วินาที)