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

แบบสอบถาม MySQL เพื่อรวมค่าของคอลัมน์ที่คล้ายกันจากสองตารางที่แตกต่างกันสำหรับ ID เฉพาะ


สมมติว่าเรามีสองตารางและทั้งสองตารางมีสองคอลัมน์คือ PlayerId และ PlayerScore เราจำเป็นต้องเพิ่ม PlayerScore จากทั้งสองตารางนี้ แต่สำหรับ PlayerId เฉพาะเท่านั้น

สำหรับสิ่งนี้ คุณสามารถใช้ UNION ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1(PlayerId int, PlayerScore int); ตกลง ตกลง 0 แถวได้รับผลกระทบ (9.84 วินาที)

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

mysql> แทรกลงในค่า DemoTable1 (1000,87) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (3.12 วินาที) mysql> แทรกลงในค่า DemoTable1 (1000,65) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (1.29 วินาที) mysql> ลงในค่า DemoTable1 (1001,10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (1.76 วินาที) mysql> แทรกลงในค่า DemoTable1 (1000,45) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (2.23 วินาที)

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

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

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

<ก่อนหน้า>+----------+-------------+| รหัสผู้เล่น | คะแนนผู้เล่น |+----------+-------------+| 1000 | 87 || 1000 | 65 || 1001 | 10 || 1000 | 45 |+----------+-------------+4 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างตารางที่สอง -

mysql> สร้างตาราง DemoTable2 (PlayerId int, PlayerScore int); ตกลง ตกลง 0 แถวได้รับผลกระทบ (11.76 วินาที)

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

mysql> แทรกลงในค่า DemoTable2 (1000,67) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.71 วินาที) mysql> แทรกลงในค่า DemoTable2 (1001,58) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (1.08 วินาที) mysql> ลงในค่า DemoTable2 (1000,32); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)

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

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

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

<ก่อนหน้า>+----------+-------------+| รหัสผู้เล่น | คะแนนผู้เล่น |+----------+-------------+| 1000 | 67 || 1001 | 58 || 1000 | 32 |+----------+-------------+3 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อรวมคอลัมน์ในตารางหนึ่งกับคอลัมน์ในอีกตารางหนึ่ง ที่นี่ เรากำลังเพิ่ม PlayerScore สำหรับ PlayerId 1000 -

mysql> เลือก sum(firstSum) จาก (เลือก Sum(PlayerScore) firstSum จาก DemoTable1 โดยที่ PlayerId=1000 union เลือก Sum(PlayerScore) firstSum จาก DemoTable2 โดยที่ PlayerId=1000) tbl;

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

<ก่อนหน้า>+--------------+| ผลรวม(ผลรวมแรก) |+---------------+| 296 |+-----------------------+1 แถวในชุด (0.02 วินาที)