คำถามติดแท็ก where-in

21
ฉันสามารถผูกอาร์เรย์กับเงื่อนไข IN () ได้หรือไม่
ฉันอยากรู้ว่าเป็นไปได้ไหมที่จะผูกค่ากับตัวยึดตำแหน่งโดยใช้ PDO กรณีการใช้งานที่นี่กำลังพยายามส่งผ่านอาร์เรย์ของค่าเพื่อใช้กับIN()เงื่อนไข ฉันต้องการทำสิ่งนี้: <?php $ids=array(1,2,3,7,8,9); $db = new PDO(...); $stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(:an_array)' ); $stmt->bindParam('an_array',$ids); $stmt->execute(); ?> และมี PDO ผูกและอ้างอิงค่าทั้งหมดในอาร์เรย์ ในขณะที่ฉันทำ: <?php $ids = array(1,2,3,7,8,9); $db = new PDO(...); foreach($ids as &$val) $val=$db->quote($val); //iterate through array and quote $in = implode(',',$ids); //create comma …

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