|  | 
	                
  
    |  |  
    | 
        
        สอบถามเรื่องการใช้ SQL ในส่วนของ Where cause ของ in ครับ เกิด Error     |  
    |  |  
 
              
  
    | 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ก็อยู่ที่ in กับอะไรครับ 
 ถ้า in กับ (select fld from table2)
 Code (SQL)
 
 
select * 
from table
where field1 in (select fld2 from table2)
 
 Code (SQL)
 
 
select table1.* 
from table1
inner join (
     select id from table2 group by id
) as tb2 on table1.id=tb2.id
 ถ้าทำอย่างอื่นเอา query string มาดูครับ
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-19 12:39:56 | By :
                            Chaidhanan |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ขอบคุณ ท่านที่มาโพสให้มากครับ 
 ดาต้าที่ได้มันประมาณนี้นะครับ
 
 select field_data from table1 where id in (1,2,3,.....,1500)
 
 เป็นดาต้าที่ ส่งมาจาก Textbox นะครับ เลยใช้ Sub Query ไม่ได้
 
 ผมเลยแก้ โดย นำดาต้ามา Split แล้ว For .. loop เอาครับ ค่อยๆ Execute ทีละชุดครับ
 ขอบคุณท่านที่มาตอบมากครับ
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-19 13:15:29 | By :
                            pisko101 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ถ้าเป็นผม ผมจะสร้าง temp table แล้ววน loop ยัดข้อมูลลงไป ไม่น่าจะนานนะ 1000 - 2000 record นี่น่ะ จากนั้นค่อยๆจับมาเข้า query ซึ่งไม่น่าจะต้องใช้ not..in หรือ in เพราะไอ้เจ้า 2 statment นั่นกิน resource คอดๆ
 พอเสร็จกิจ ก็พากันไปตรวจที่ศูนย์ HIV แห่งชาติ .. ไม่ใช่ละ ก็ลบ temp table ออกไป
 
 
 (กรรมละลืมตรองดูว่าเป็นเทพพยากรณ์ ชินแต่กับซีเชล)
 Code (SQL)
 
 
CREATE GLOBAL TEMPORARY TABLE FOO 
(ID INTEGER) 
ON COMMIT DELETE ROWS;
INSERT ALL
   INTO FOO (ID) VALUES (1)
   INTO FOO (ID) VALUES (2)
--....
--.... จะใส่มากี่ตัวล่ะครัช 1,000 หรือจะ 10,000
--....แต่ถ้ามากจินๆ ก็เปลี่ยนเป็น bulk insert ลงไป temp table ก็ได้
   INTO FOO (ID) VALUES (2323) ;
--จาก select field_data from table1 where id in (1,2,3,.....,1500)
--ได้แว่
SELECT FIELD_DATA 
FROM TABLE1 RIGHT JOIN FOO 
ON TABLE1.ID = FOO.ID ;
DROP TABLE FOO ;
 
 |  
              | 
 ประวัติการแก้ไข
 2015-02-22 21:50:43
 2015-02-22 22:09:18
 2015-02-22 22:23:10
 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-22 21:49:26 | By :
                            BIG BAD DOG |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ฮ่าๆ ขอบคุณ ทุกท่านมากครับ  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-23 09:21:04 | By :
                            pisko101 |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              |  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            2015-02-23 21:48:56 | By :
                            mr.win |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |