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

จะเพิ่มค่าคงที่ในขณะที่ INSERT INTO ด้วย SELECT ในแบบสอบถาม MySQL ได้อย่างไร


คุณสามารถเพิ่มค่าคงที่เมื่อคุณใช้แบบสอบถาม INSERT INTO SELECT MySQL เขียนค่าโดยตรงในคำสั่ง select หรือคุณสามารถเพิ่มโดยใช้ตัวแปรที่กำหนดค่าเริ่มต้นได้

กรณีที่ 1 − ใส่ค่าโดยตรงในคำสั่ง INSERT INTO SELECT ไวยากรณ์มีดังนี้ −

INSERT INTO yourSecondTableName(yourColumnName1,yourColumnName2,....N) SELECT yourColumnName1 ,yourColumnName2,.....N, yourStaticValue จาก yourFirstTableName;

กรณีที่ 2 - เพิ่มโดยใช้ตัวแปร ไวยากรณ์มีดังนี้ −

SET @yourVariableName − =yourstaticValue; INSERT INTO yourSecondTableName(yourColumnName1,yourColumnName2,....N) SELECT yourColumnName1 ,yourColumnName2,.....N,@yourVariableName จาก yourFirstTableName;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น คุณต้องสร้างสองตาราง ตารางแรกจะมีระเบียนบางส่วนในตาราง ในขณะที่ตารางที่สองจะแทรกระเบียนตารางแรกโดยใช้การแทรกลงในคำสั่ง select และจะเพิ่มค่าคงที่

ให้เราสร้างตารางแรก แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง First_table -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> FirstValue int, -> SecondValue int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.56 วินาที) 

ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า First_table(FirstValue,SecondValue) (10,14); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงใน First_table (FirstValue,SecondValue) ค่า (12,13); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.52 วินาที) mysql> แทรกลงใน First_table (FirstValue,SecondValue) ค่า (100,110); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงใน First_table (FirstValue, SecondValue) ค่า (45,55); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.27 วินาที)

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

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

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+-----------+-------------+| รหัส | FirstValue | SecondValue |+----+-----------+-----------+| 1 | 10 | 14 || 2 | 12 | 13 || 3 | 100 | 110 || 4 | 45 | 55 |+----+-----------+-------------+4 แถวในชุด (0.00 วินาที)

ให้เราสร้างตารางที่สอง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง Second_table -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Value1 int, -> Value2 int, -> Value3 int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถว ได้รับผลกระทบ (0.81 วินาที)

ในตารางด้านบนมีสามคอลัมน์ โดยที่ 2 คอลัมน์จะได้รับค่าจากตารางแรก ในขณะที่คอลัมน์ที่สามจะได้รับค่าโดยตรงหรือโดยอ้อม

คำสั่งแบบสอบถาม INSERT INTO SELECT มีดังต่อไปนี้ -

กรณีที่ 1 − เพิ่มค่าคงที่ให้กับคอลัมน์ที่สาม แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน Second_table(Value1,Value2,Value3) -> เลือก FirstValue,SecondValue,45 จาก First_table ตกลง ตกลง 4 แถวได้รับผลกระทบ (0.16 วินาที) บันทึก − 4 รายการซ้ำ − 0 คำเตือน − 0

ที่นี่ฉันได้เพิ่ม 45 ในคอลัมน์ที่สาม ตอนนี้ตรวจสอบระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

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

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+---------+---------+-------+| รหัส | Value1 | Value2 | ค่าที่ 3 |+----+---------+---------+--------+| 1 | 10 | 14 | 45 || 2 | 12 | 13 | 45 || 3 | 100 | 110 | 45 || 4 | 45 | 55 | 45 |+----+--------+---------+-------+4 แถวในชุด (0.00 วินาที)

กรณีที่ 2 − เมื่อคุณใช้ตัวแปร แบบสอบถามมีดังนี้ −

mysql> set @staticValue − =20; Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)mysql> แทรกลงใน Second_table(Value1,Value2,Value3) -> เลือก FirstValue,SecondValue,@staticValue จาก First_table; Query OK, 4 แถวที่ได้รับผลกระทบ (0.19 วินาที) บันทึก − 4 รายการซ้ำ − 0 คำเตือน − 0

การเพิ่มค่า 20 สำหรับคอลัมน์ที่สามของฉัน ให้เราตรวจสอบบันทึกของตารางอีกครั้งโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

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

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+---------+---------+-------+| รหัส | Value1 | Value2 | ค่าที่ 3 |+----+---------+---------+--------+| 1 | 10 | 14 | 20 || 2 | 12 | 13 | 20 || 3 | 100 | 110 | 20 || 4 | 45 | 55 | 20 |+----+---------+---------+-------+4 แถวในชุด (0.00 วินาที)