Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > สอบถามเรื่องการใช้ SQL ในส่วนของ Where cause ของ in ครับ เกิด Error



 

สอบถามเรื่องการใช้ SQL ในส่วนของ Where cause ของ in ครับ เกิด Error

 



Topic : 114525



โพสกระทู้ ( 34 )
บทความ ( 0 )



สถานะออฟไลน์




สวัสดีครับ ผมติดปัญหาการใช้งาน SQL อะครับ

sqlerror

ตามรูปข้างบนเลยครับ
จากที่ลองอ่าน error ดู เหมือนกับว่า ภายใน in มัน limit list ไว้ 1000
ซึ้งทำให้ผมไม่เข้าใจว่าทำไมต้องlimitไว้ ถ้ามากกว่านั้น Database จะทำงานหนักหรือมีปัญหาหรือไม่

ถ้าไม่มีปัญหาอะไร พอจะมีคำสั่งอื่นที่นำมาใช้ แทน IN ได้ไหมที่ ใช้ List ในการ where มากกว่า 1000



Tag : .NET, Oracle







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-02-19 10:46:22 By : pisko101 View : 1066 Reply : 8
 

 

No. 1



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


ก็อยู่ที่ 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
 


 

No. 2



โพสกระทู้ ( 34 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณ ท่านที่มาโพสให้มากครับ

ดาต้าที่ได้มันประมาณนี้นะครับ

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
 

 

No. 3



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


แบ่ง element เอาครับ

Code
select field_data from table1 where id in (1,2,3,.....,1000) or id in (1001, .....,1500)


ลองดูครับไม่แน่ใจเหมือนกัน ไม่เคยทำ แต่คาดว่าน่าจะได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 15:35:18 By : Chaidhanan
 


 

No. 4

Guest


Quote:
พอจะมีคำสั่งอื่นที่นำมาใช้ แทน IN ได้ไหมที่ ใช้ List ในการ where มากกว่า 1000


มีอีกหลายฯวิธีครับ และดีกว่าด้วย

SQL Server --> Table Valued Parameters (TVP)
--- ตัวอย่างการใช้งานมีมากมาย ถ้าใช้ google เป็น
ORACLE --> Custom User Define Type (UDT)
--- ตัวอย่างการใช้งานมีมากมาย ถ้าใช้ google เป็น
----- http://appsjack.blogspot.co.uk/2010/09/pass-custom-udt-types-to-oracle-stored.html


การทำงานของมันก็ก็คล้ายฯ BulkCopy ยัดข้อมูลลง Server ไม่หวั่นแม้วันมามาก
ตัวอย่างจาก Code Project
http://www.codeproject.com/Tips/309564/SQL-Bulk-copy-method-to-insert-large-amount-of-dat
Code (C#)
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings[
       "ConsoleApplication3.Properties.Settings.daasConnectionString"].ConnectionString))
{
      cn.Open();
      using (SqlBulkCopy copy = new SqlBulkCopy(cn))
      {
            copy.ColumnMappings.Add(0, 0);
            copy.ColumnMappings.Add(1, 1);
            copy.ColumnMappings.Add(2, 2);
            copy.ColumnMappings.Add(3, 3);
            copy.ColumnMappings.Add(4, 4);
            copy.DestinationTableName = "Censis";
            copy.WriteToServer(dt);
      }
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 02:20:36 By : หน้าฮี
 


 

No. 5



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าเป็นผม ผมจะสร้าง 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
 


 

No. 6

Guest


อะไรบ้างล่ะที่ไม่มีข้อผิดพลาด

บ้านตูอีกหลังหนึ่งไม่ได้ใช้ไฟฟ้ามา 2 เดือนแล้ว และเอา 2 เท้ายัน Cutout ลงเผื่อมันเด้งขึ้นเอง

Code
โปรแกรมระดับโลก ข้อมูลจริงใบแจ้งค่าไฟฟ้า ของข้าพเจ้า เดือน 1/58 จดครั้งก่อน จดครั้งหลัง จำนวนหน่วย 2391 2394 3 จำทนต้องจ่าย 50.xx บาท (หักผ่านบัญชี) เดือน 2/58 จดครั้งก่อน จดครั้งหลัง จำนวนหน่วย 2394 2393 357 จำทนต้องจ่าย 1,530.xx บาท (หักผ่านบัญชี)



จังไร เอี้ย จริงฯ


คิดในแง่ดี หวังดี หรือว่ามีข้อผิดพลาด เพื่อแจ้งให้เราทราบ
คิดในเง่ร้าย มันสุจริตหรือเปล่าหว่า?


ปล. คนตัวเล็กฯอย่างผม มันจะไปทำอะไรได้ล่ะ ก้มหน้ารับกรรมต่อไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-23 07:43:21 By : หน้าฮี
 


 

No. 7



โพสกระทู้ ( 34 )
บทความ ( 0 )



สถานะออฟไลน์


ฮ่าๆ ขอบคุณ ทุกท่านมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-23 09:21:04 By : pisko101
 


 

No. 8



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-23 21:48:56 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องการใช้ SQL ในส่วนของ Where cause ของ in ครับ เกิด Error
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่