คำถามติดแท็ก order-by

ประโยคที่ใช้ในคำสั่ง SQL SELECT เพื่อเรียงลำดับผลลัพธ์ของแบบสอบถาม

2
มีวิธีเพิ่มประสิทธิภาพการเรียงลำดับตามคอลัมน์ของตารางที่เข้าร่วมหรือไม่
นี่คือแบบสอบถามที่ช้าของฉัน: SELECT `products_counts`.`cid` FROM `products_counts` `products_counts` LEFT OUTER JOIN `products` `products` ON ( `products_counts`.`product_id` = `products`.`id` ) LEFT OUTER JOIN `trademarks` `trademark` ON ( `products`.`trademark_id` = `trademark`.`id` ) LEFT OUTER JOIN `suppliers` `supplier` ON ( `products_counts`.`supplier_id` = `supplier`.`id` ) WHERE `products_counts`.product_id IN (159, 572, 1075, 1102, 1145, 1162, 1660, 2355, …
10 mysql  order-by 

1
SQL Server สั่งซื้อผลลัพธ์อย่างไรเมื่อใช้การรวม
SQL Server จะหาลำดับของระเบียนในชุดผลลัพธ์ของการดำเนินการแบบสอบถามได้อย่างไร ฉันพยายามทำให้หัวหรือก้อยของมัน แต่พบว่าตัวเองเกาหัวของฉัน เมื่อฉันเปลี่ยนเขตข้อมูลฉันกำลังเลือกคำสั่งซื้อก็จะเปลี่ยนไปเช่นกัน เมื่อฉันรัน SQL ด้านล่างด้วยSELECT *ฉันได้รับบันทึกเดียวกัน แต่ในลำดับที่แตกต่างกันมาก SELECT TOP (900) AD.ATTACHMENTID, AD.NAME, AD.ISINLINE, AD.INSERTEDDATETIME, ATMT.ATTACHMENTBLOB, U.UFID FROM ATTACHMENTDETAIL AD WITH (NOLOCK) INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID INNER …

3
SELECT ROW_NUMBER () รับประกันว่าจะให้ผลลัพธ์ที่เรียงลำดับตามหมายเลขแถวที่สร้างขึ้นหรือไม่
เช่นพิจารณาแบบสอบถาม SQL: SELECT A.[Name], ROW_NUMBER() OVER(ORDER BY A.[Name] ASC) FROM [FooTable] AS A ที่นี่ฉันสังเกตเห็นผลลัพธ์ที่ถูกส่งคืนโดย A. [ชื่อ] หากฉันเปลี่ยนคอลัมน์เรียงลำดับที่กำหนดไว้ในฟังก์ชัน ROW_NUMBER เป็นคอลัมน์อื่นผลลัพธ์จะกลายเป็นคอลัมน์เรียงลำดับอีกครั้ง ฉันคาดหวังว่าหมายเลขแถวจะถูกกำหนดให้กับแถว แต่ฉันไม่ได้คาดหวังว่าแถวจะกลับมาเรียงตามเกณฑ์เดียวกัน นี่เป็นเพียงผลข้างเคียงของวิธีการดำเนินการค้นหา (ในกรณีของฉันใน SQL Server 2008 R2) หรือพฤติกรรมนี้รับประกันได้หรือไม่ (ฉันไม่พบการอ้างอิงถึงการรับประกันดังกล่าว)

3
วิธีทำการสั่งแบบมีเงื่อนไขสำหรับคอลัมน์สองคอลัมน์ขึ้นไป
ใน MS SQL Server 2005 ฉันกำลังเขียนแบบสอบถามหนึ่งรายการที่มีการเรียงลำดับตามเงื่อนไขและปัญหาของฉันคือฉันไม่รู้ว่าฉันจะเรียงลำดับตามเงื่อนไขได้อย่างไรโดยใช้สองคอลัมน์ ถ้าฉันเขียนโค้ดแบบนี้มันใช้งานได้ปกติ select * from table order by case @pkr when 'kol' then kol when 'nci' then nci end ฉันไม่ทราบวิธีการสั่งซื้อแบบมีเงื่อนไขสำหรับคอลัมน์สองคอลัมน์ขึ้นไป select * from table order by case @pkr when 'KOL-NCI' then kol,nci when 'kol-MPCI' then kol,mpci end มีแนวคิดที่จะสร้าง TSQL แบบไดนามิกและใช้งานsp_executesqlแต่ฉันยังคงมองหาแนวคิดที่ดีกว่าอยู่ใช่ไหม

2
การใช้งานฐานข้อมูลของ ORDER BY ในแบบสอบถามย่อย
ฉันกำลังใช้แอปพลิเคชัน (MapServer - http://mapserver.org/ ) ที่ล้อมรอบคำสั่ง SQL เพื่อให้คำสั่ง ORDER BY อยู่ในแบบสอบถามภายใน เช่น SELECT * FROM ( SELECT ID, GEOM, Name FROM t ORDER BY Name ) as tbl แอปพลิเคชันมีไดรเวอร์ฐานข้อมูลที่แตกต่างกันมากมาย ฉันใช้ไดรเวอร์ MS SQL Server เป็นหลักและ SQL Server 2008 ส่วนใหญ่จะเกิดข้อผิดพลาดหากพบคำสั่งซื้อในแบบสอบถามย่อย จาก MS Docs (แม้ว่าจะใช้กับ SQL Server 2000 แต่ก็ดูเหมือนว่าจะใช้): เมื่อคุณใช้ส่วนคำสั่ง ORDER BY ในมุมมองฟังก์ชั่นอินไลน์ตารางที่ได้รับหรือแบบสอบถามย่อยมันไม่รับประกันผลลัพธ์ที่สั่งซื้อ …

2
กำหนดลำดับการจัดเรียงคีย์ jsonb ที่เกี่ยวข้องกับอาร์เรย์
ฉันมีตารางใน PostgreSQL พร้อมข้อมูลบางส่วน: create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test …

1
MySQL: เพิ่มประสิทธิภาพยูเนี่ยนด้วย“ ORDER BY” ในการค้นหาภายใน
ฉันเพิ่งตั้งค่าระบบบันทึกซึ่งประกอบด้วยหลายตารางที่มีเค้าโครงเดียวกัน มีตารางหนึ่งตารางสำหรับแหล่งข้อมูลแต่ละแหล่ง สำหรับโปรแกรมดูบันทึกฉันต้องการ ยูเนี่ยนทุกตารางบันทึก , กรองพวกเขาโดยการบัญชี , เพิ่มคอลัมน์หลอกสำหรับการระบุแหล่งที่มา เรียงพวกเขาโดยเวลา , และจำกัด พวกเขาสำหรับการแบ่งหน้า ตารางทั้งหมดมีเขตข้อมูลที่เรียกzeitpunktว่าเป็นคอลัมน์วันที่ / เวลาที่จัดทำดัชนี ความพยายามครั้งแรกของฉันคือ: (SELECT l.id, l.account_id, l.vnum, l.count, l.preis, l.zeitpunkt AS zeit, 'hp' AS source FROM is_log AS l WHERE l.account_id = 730) UNION (SELECT l.id, l.account_id, l.vnum, l.count, l.preis, l.zeitpunkt, 'ig' AS source FROM ig_is_log AS …

3
ค้นหาการจับคู่ที่ดีที่สุดและเรียงลำดับ
ฉันพยายามเขียนแบบสอบถามตามบรรทัดเหล่านี้: select * from tbl where col1 = 1 and col2 = 2 and col3 = 3 order by ... ; ฉันต้องการผลลัพธ์ทั้งหมดก่อนซึ่งทั้งหมด 3 WHEREตรงกับเงื่อนไข (3/3) จากนั้นผลลัพธ์ทั้งหมดที่ตรงกับ 2 เงื่อนไขใด ๆ (2/3) และสุดท้ายผลลัพธ์ที่ตรงกับเงื่อนไข 1 ข้อ (1/3) ต้องมีการเรียงลำดับชุดผลลัพธ์ทั้ง 3 ชุดเหล่านี้โดย (col4, col5, col6)ชุดผลความต้องการที่จะได้รับคำสั่งจาก ฉันสามารถทำสิ่งนั้นในแบบสอบถามเดียวได้ไหม ตัวอย่างเช่น: ตัวอย่าง http://img708.imageshack.us/img708/1646/sampletableresult1.jpg สคริปต์เพื่อสร้างข้อมูลทดสอบ: IF EXISTS (SELECT * FROM …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.