Latest web development tutorials

SQLite แบบสอบถามย่อย

แบบสอบถามย่อยหรือคำสั่งที่ซ้อนกันหรือแบบสอบถามภายในจะถูกฝังอยู่ในแบบสอบถามสั่ง WHERE ภายในแบบสอบถาม SQLite อื่น

ใช้ย่อยแบบสอบถามส่งกลับข้อมูลที่จะนำมาใช้ในแบบสอบถามหลักเป็นเงื่อนไขเพื่อ จำกัด ข้อมูลที่ต้องเรียก

subqueries สามารถใช้กับ SELECT, INSERT, UPDATE และงบลบอาจจะมาพร้อมการใช้งานโดยผู้ประกอบการเช่น =, <,>,> = <=, IN ระหว่างเช่น

ต่อไปนี้เป็นหลายกฎแบบสอบถามย่อยที่ต้องปฏิบัติตาม:

  • subqueries จะต้องอยู่ในวงเล็บ

  • ข้อเลือกแบบสอบถามย่อยสามารถมีคอลัมน์หนึ่งเว้นแต่หลายคอลัมน์ในแบบสอบถามหลักเปรียบเทียบแบบสอบถามย่อยคอลัมน์ที่เลือก

  • ORDER BY ไม่สามารถนำมาใช้ในแบบสอบถามย่อยแม้ว่าแบบสอบถามหลักสามารถใช้ ORDER BY คุณสามารถใช้จำแนกตามกลุ่มใน subqueries ฟังก์ชั่นเช่นเดียวกับการสั่งซื้อโดย

  • แบบสอบถามย่อยผลตอบแทนที่มากกว่าหนึ่งบรรทัดสามารถนำมาใช้เฉพาะกับผู้ประกอบการที่มีหลายค่าเช่นผู้ประกอบการใน

  • ระหว่างผู้ประกอบการไม่สามารถใช้ร่วมกับคำสั่งย่อย แต่ระหว่างสามารถใช้ภายใน subqueries

แบบสอบถามย่อยคำสั่ง SELECT

แบบสอบถามย่อยมักจะใช้กับคำสั่ง SELECT ไวยากรณ์พื้นฐานจะเป็นดังนี้:

SELECT column_name [คอลัมน์]
จาก table1 [Table2]
WHERE OPERATOR คอลัมน์
      (เลือกคอลัมน์ [คอลัมน์]
      จาก table1 [Table2]
      [WHERE])

ตัวอย่าง

ตาราง บริษัท สมมติว่ามีการบันทึกต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

ตอนนี้ขอตรวจสอบคำสั่ง SELECT แบบสอบถามย่อย:

SQLite> เลือก * 
     จาก บริษัท 
     ที่ id In (id เลือก 
                  จาก บริษัท 
                  WHERE เงินเดือน> 45000);

นี้ก่อให้เกิดผลลัพธ์ต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

แทรกคำสั่งแบบสอบถามย่อย

subqueries นอกจากนี้ยังสามารถนำมาใช้กับคำสั่ง INSERT คำสั่ง INSERT ใช้แบบสอบถามย่อยเพื่อกลับข้อมูลลงในตารางอีก ในแบบสอบถามย่อยข้อมูลที่เลือกสามารถเป็นตัวละครวันที่หรือปรับเปลี่ยนฟังก์ชั่นที่เป็นตัวเลข

ไวยากรณ์พื้นฐานจะเป็นดังนี้:

INSERT INTO table_name [(COLUMN1 [column2])]
           เลือก [* | COLUMN1 [column2]
           จาก table1 [Table2]
           [ที่ค่า OPERATOR]

ตัวอย่าง

สมมติว่าโครงสร้างของตาราง COMPANY_BKP บริษัท ฯ และ บริษัท ที่คล้ายกันและสามารถใช้สร้างตารางเดียวกันในการสร้างเพียงแค่เปลี่ยนชื่อ COMPANY_BKP ตาราง ขณะนี้คัดลอกตารางทั้ง บริษัท จะ COMPANY_BKP ไวยากรณ์เป็นดังนี้:

SQLite> INSERT INTO COMPANY_BKP
     * เลือกจาก บริษัท 
     ที่ id In (id เลือก 
                  จาก บริษัท );

UPDATE แบบสอบถามย่อยคำสั่ง

subqueries สามารถใช้ร่วมกับคำสั่ง UPDATE เมื่อใช้คำสั่ง UPDATE แบบสอบถามย่อยคอลัมน์เดียวหรือหลายที่มีการปรับปรุงในตาราง

ไวยากรณ์พื้นฐานจะเป็นดังนี้:

ตาราง UPDATE
SET column_name = new_value
[WHERE OPERATOR [VALUE]
   (เลือกคอลัมน์
   จาก TABLE_NAME)
   [WHERE)]

ตัวอย่าง

สมมติว่าเรามีตาราง COMPANY_BKP ตารางการสำรองข้อมูล บริษัท

ตัวอย่างต่อไปนี้ของตาราง บริษัท ทุกเพศทุกวัยกว่าหรือเท่ากับ 27 ลูกค้าเงินเดือนปรับปรุงเดิม 0.50 เท่า:

SQLite> Company Update
     ตลาดหลักทรัพย์เงินเดือนเงินเดือน = 0.50 *
     WHERE วัย (SELECT อายุจาก COMPANY_BKP
                   WHERE อายุ> = 27);

นี้จะส่งผลกระทบต่อทั้งสองสายของ บริษัท บันทึกสุดท้ายในตารางดังต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 10,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 42,500.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

แบบสอบถามย่อยคำสั่ง DELETE

subqueries สามารถใช้ร่วมกับคำสั่งลบเช่นเดียวกับงบอื่น ๆ ดังกล่าวข้างต้น

ไวยากรณ์พื้นฐานจะเป็นดังนี้:

DELETE FROM TABLE_NAME
[WHERE OPERATOR [VALUE]
   (เลือกคอลัมน์
   จาก TABLE_NAME)
   [WHERE)]

ตัวอย่าง

สมมติว่าเรามีตาราง COMPANY_BKP ตารางการสำรองข้อมูล บริษัท

ตัวอย่างต่อไปนี้ลบระเบียนลูกค้ามากกว่าหรือเท่ากับอายุ 27 ตาราง บริษัท :

SQLite> ลบจาก บริษัท
     WHERE วัย (SELECT อายุจาก COMPANY_BKP
                   WHERE อายุ> 27);

นี้จะส่งผลกระทบต่อทั้งสองสายของ บริษัท บันทึกสุดท้ายในตารางดังต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 42,500.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0