คำถามติดแท็ก subquery

"subquery" เป็นคำศัพท์ SQL ที่คลุมเครือใช้เพื่ออธิบายเมื่อมีคำสั่ง "SELECT" มากกว่าหนึ่งคำสั่งในแบบสอบถามหรือเมื่อใช้ในคำสั่ง Data Manipulation Language (DML) (IE: DELETE, UPDATE, INSERT, MERGE) คำสั่ง SELECT ของแบบสอบถามย่อยจะอยู่ในวงเล็บ / วงเล็บเสมอ

18
เข้าร่วมกับแบบสอบถามย่อย
ฉันเป็นผู้ใช้ MySQL สมัยก่อนและต้องการคำสั่งJOINย่อยมากกว่าเสมอ แต่ทุกวันนี้ทุกคนใช้คิวรีย่อยและฉันเกลียดมัน ฉันไม่รู้ว่าทำไม ฉันขาดความรู้ทางทฤษฎีที่จะตัดสินด้วยตัวเองหากมีความแตกต่างใด ๆ แบบสอบถามย่อยดีเท่าJOINและดังนั้นจึงไม่มีอะไรต้องกังวลใช่หรือไม่
837 sql  mysql  subquery  join 

16
ข้อผิดพลาดของ MySQL 1093 - ไม่สามารถระบุตารางเป้าหมายสำหรับการอัปเดตในส่วนคำสั่งได้
ฉันมีตารางstory_categoryในฐานข้อมูลที่มีรายการที่เสียหาย แบบสอบถามถัดไปส่งคืนรายการที่เสียหาย: SELECT * FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id); ฉันพยายามที่จะลบพวกเขาดำเนินการ: DELETE FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id); แต่ฉันได้รับข้อผิดพลาดต่อไป: # 1093 - คุณไม่สามารถระบุตารางเป้าหมาย 'story_category' สำหรับการอัปเดตในส่วนคำสั่งได้ ฉันจะเอาชนะสิ่งนี้ได้อย่างไร

2
คำสั่ง select ที่ซ้อนกันใน SQL Server
ทำไมงานต่อไปนี้ไม่ทำงาน SELECT name FROM (SELECT name FROM agentinformation) ฉันเดาว่าความเข้าใจ SQL ของฉันผิดเพราะฉันคิดว่าสิ่งนี้จะกลับมาเหมือนเดิม SELECT name FROM agentinformation ชุดคำสั่ง select ด้านในไม่สร้างชุดผลลัพธ์ซึ่งคำสั่ง SELECT ส่วนนอกแล้วสอบถาม?

3
ข้อผิดพลาด“ ทุกตารางที่ได้รับจะต้องมีนามแฝงของตัวเอง” ใน MySQL คืออะไร
ฉันใช้แบบสอบถามนี้ใน MySQL SELECT ID FROM ( SELECT ID, msisdn FROM ( SELECT * FROM TT2 ) ); และมันทำให้เกิดข้อผิดพลาดนี้: ทุกตารางที่ได้รับจะต้องมีนามแฝงของตัวเอง อะไรเป็นสาเหตุของข้อผิดพลาดนี้?

6
การอัพเดตแถวของตารางใน postgres โดยใช้แบบสอบถามย่อย
ใช้ postgres 8.4 เป้าหมายของฉันคือการปรับปรุงตารางที่มีอยู่: CREATE TABLE public.dummy ( address_id SERIAL, addr1 character(40), addr2 character(40), city character(25), state character(2), zip character(5), customer boolean, supplier boolean, partner boolean ) WITH ( OIDS=FALSE ); เริ่มแรกฉันทดสอบคิวรีของฉันโดยใช้คำสั่งแทรก: insert into address customer,supplier,partner SELECT case when cust.addr1 is not null then TRUE else FALSE end customer, case …

4
มีความแตกต่างด้านประสิทธิภาพระหว่าง CTE, Sub-Query, Temporary Table หรือ Table Variable หรือไม่?
ในคำถาม SO ที่ยอดเยี่ยมนี้ความแตกต่างระหว่างCTEและsub-queriesถูกกล่าวถึง ฉันต้องการถามเฉพาะ: แต่ละเหตุการณ์ต่อไปนี้มีประสิทธิภาพมากขึ้น / เร็วขึ้นในสถานการณ์ใด CTE แบบสอบถามย่อย ตารางชั่วคราว ตัวแปรตาราง ตามเนื้อผ้าฉันได้ใช้ความพยายามอย่างมากtemp tablesในการพัฒนาstored proceduresเนื่องจากดูเหมือนว่าจะสามารถอ่านได้มากกว่าแบบสอบถามย่อยแบบพัน Non-recursive CTEสรุปชุดข้อมูลได้ดีมากและอ่านได้มาก แต่มีสถานการณ์เฉพาะที่ใคร ๆ สามารถพูดได้ว่าพวกเขาจะทำงานได้ดีขึ้นหรือไม่ หรือว่าเป็นกรณีที่ต้องทำตัวตาม ๆ ตัวเลือกต่าง ๆ เพื่อหาทางออกที่มีประสิทธิภาพที่สุด? แก้ไข ฉันเพิ่งได้รับแจ้งว่าในแง่ของประสิทธิภาพตารางชั่วคราวเป็นตัวเลือกแรกที่ดีเนื่องจากมีฮิสโตแกรมที่เกี่ยวข้องเช่นสถิติ

4
อะไรคือความแตกต่างระหว่าง LATERAL และแบบสอบถามย่อยใน PostgreSQL?
ตั้งแต่ Postgres ออกมาพร้อมกับความสามารถในการLATERALเข้าร่วมฉันได้อ่านมันเนื่องจากฉันกำลังทำการทิ้งข้อมูลที่ซับซ้อนสำหรับทีมของฉันพร้อมกับเคียวรีย่อยที่ไม่มีประสิทธิภาพจำนวนมากซึ่งทำให้เคียวรีโดยรวมใช้เวลาสี่นาทีหรือมากกว่า ฉันเข้าใจว่าการLATERALเข้าร่วมอาจช่วยฉันได้ แต่แม้หลังจากอ่านบทความอย่างนี้จาก Heap Analytics ฉันก็ยังไม่ค่อยติดตาม กรณีการใช้งานสำหรับการLATERALเข้าร่วมคืออะไร? การLATERALเข้าร่วมและการสืบค้นย่อยแตกต่างกันอย่างไร

9
ความแตกต่างระหว่าง CTE และ SubQuery หรือไม่
จากโพสต์นี้จะใช้ ROW_NUMBER อย่างไรในขั้นตอนต่อไปนี้? มีสองรุ่นของคำตอบที่หนึ่งใช้sub-queryและอื่น ๆ ใช้CTEเพื่อแก้ปัญหาเดียวกัน ตอนนี้ข้อดีของการใช้คำCTE (Common Table Expression)สั่งย่อย 'over-query' (ดังนั้นยิ่งอ่านง่ายยิ่งขึ้นว่าการสืบค้นทำอะไรอยู่จริง) ประโยชน์เฉพาะของใช้CTEมากกว่าsub-selectคือว่าที่จริงผมสามารถตั้งชื่อ sub-queryมีความแตกต่างอื่น ๆ ระหว่างสองสิ่งนี้หรือไม่เมื่อใช้ CTE เป็น CTE แบบง่าย ๆ (ไม่ใช่แบบเรียกซ้ำ)?

10
MySQL - SELECT WHERE field IN (subquery) - ทำไมช้ามาก
ฉันมีข้อมูลซ้ำสองสามรายการในฐานข้อมูลที่ฉันต้องการตรวจสอบดังนั้นสิ่งที่ฉันทำเพื่อดูว่ารายการใดซ้ำกันฉันทำสิ่งนี้: SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 ด้วยวิธีนี้ฉันจะได้รับแถวทั้งหมดที่มี related_field เกิดขึ้นมากกว่าหนึ่งครั้ง แบบสอบถามนี้ใช้เวลาในการดำเนินการเป็นมิลลิวินาที ตอนนี้ฉันต้องการตรวจสอบรายการที่ซ้ำกันแต่ละรายการดังนั้นฉันคิดว่าฉันสามารถเลือกแต่ละแถวใน some_table โดยมีฟิลด์ที่เกี่ยวข้องในแบบสอบถามด้านบนดังนั้นฉันจึงทำดังนี้ SELECT * FROM some_table WHERE relevant_field IN ( SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 ) สิ่งนี้กลายเป็นว่าช้ามากด้วยเหตุผลบางประการ (ใช้เวลาไม่กี่นาที) เกิดอะไรขึ้นกันแน่ถึงทำให้มันช้าขนาดนั้น? related_field ถูกจัดทำดัชนี ในที่สุดฉันก็ลองสร้างมุมมอง "temp_view" จากแบบสอบถามแรก(SELECT relevant_field FROM some_table …
138 mysql  subquery  where-in 

10
วิธีทำใน Laravel แบบสอบถามย่อยที่อยู่ใน
ฉันจะสร้างแบบสอบถามนี้ใน Laravel ได้อย่างไร: SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN ('223', '15') ) AND `p`.`active`=1 ฉันสามารถทำได้ด้วยการเข้าร่วม แต่ฉันต้องการรูปแบบนี้เพื่อประสิทธิภาพ

8
SQL เข้าร่วมกับแบบสอบถามย่อยของ SQL (ประสิทธิภาพ)?
ฉันต้องการทราบว่าฉันมีแบบสอบถามเข้าร่วมบางอย่างเช่นนี้ - Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id และแบบสอบถามย่อยเช่นนี้ - Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept) เมื่อฉันพิจารณาประสิทธิภาพของคำค้นหาใดที่จะเร็วกว่าและเพราะเหตุใด มีเวลาที่ควรชอบมากกว่ากันไหม? ขออภัยหากนี่เป็นเรื่องเล็กน้อยเกินไปและถามมาก่อน แต่ฉันสับสนเกี่ยวกับเรื่องนี้ นอกจากนี้จะเป็นการดีมากหากพวกคุณสามารถแนะนำเครื่องมือที่ฉันควรใช้เพื่อวัดประสิทธิภาพของคำค้นหาสองรายการ ขอบคุณมาก!

6
ฉันจะแทรกค่าลงในตารางโดยใช้แบบสอบถามย่อยที่มีผลลัพธ์มากกว่าหนึ่งรายการได้อย่างไร
ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ อาจเป็นปัญหาที่ค่อนข้างง่ายในการแก้ไข - แต่ฉันไม่ใช่คนที่ .. ;-) ฉันมีสองตารางใน SQL Server: บทความ ราคา ตอนนี้ฉันต้องการเลือกชุดของรหัสและแทรกบางรายการลงในตารางราคาด้วย ID เหล่านั้น เช่น (SQL ผิดและไม่ทำงาน) INSERT INTO prices (group, id, price) VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50); SQL Error -> เคียวรีย่อยมีมากกว่า 1 ค่า ขอบคุณที่ช่วยเหลือ
104 sql  insert  subquery 

2
แบบสอบถามย่อยใน FROM ต้องมีนามแฝง
ฉันมีแบบสอบถามนี้ที่ฉันเขียนใน PostgreSQL ซึ่งส่งกลับข้อผิดพลาดว่า: [Err] ข้อผิดพลาด: LINE 3: FROM (SELECT DISTINCT (identifiant) AS made_only_recharge นี่คือข้อความค้นหาทั้งหมด: SELECT COUNT (made_only_recharge) AS made_only_recharge FROM ( SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER = '0130' EXCEPT SELECT DISTINCT (identifiant) AS made_only_recharge FROM cdr_data WHERE CALLEDNUMBER != '0130' ) ฉันมีข้อความค้นหาที่คล้ายกันใน Oracle ซึ่งใช้งานได้ดี การเปลี่ยนแปลงเพียงอย่างเดียวคือสิ่งที่ฉันมีEXCEPTใน Oracle …

3
PostgreSQL 'NOT IN' และแบบสอบถามย่อย
ฉันพยายามดำเนินการค้นหานี้: SELECT mac, creation_date FROM logs WHERE logs_type_id=11 AND mac NOT IN (select consols.mac from consols) แต่ฉันไม่ได้รับผลลัพธ์ ฉันทดสอบแล้วและฉันรู้ว่ามีบางอย่างผิดปกติกับไวยากรณ์ ใน MySQL แบบสอบถามดังกล่าวทำงานได้อย่างสมบูรณ์ ฉันได้เพิ่มแถวเพื่อให้แน่ใจว่ามีแถวmacที่ไม่มีอยู่ในconsolsตาราง แต่ก็ยังไม่ให้ผลลัพธ์ใด ๆ

2
SQL LEFT JOIN นามแฝงการสืบค้นย่อย
ฉันกำลังเรียกใช้แบบสอบถาม SQL นี้: SELECT wp_woocommerce_order_items.order_id As No_Commande FROM wp_woocommerce_order_items LEFT JOIN ( SELECT meta_value As Prenom FROM wp_postmeta WHERE meta_key = '_shipping_first_name' ) AS a ON wp_woocommerce_order_items.order_id = a.post_id WHERE wp_woocommerce_order_items.order_id =2198 และฉันได้รับข้อผิดพลาดนี้: # 1054 - คอลัมน์ที่ไม่รู้จัก 'a.post_id' ใน 'ในประโยค' ฉันคิดว่ารหัสของฉันค่อนข้างเรียบง่าย แต่ฉันทำไม่ถูก ผมทำอะไรผิดหรือเปล่า?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.