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

Structured Query Language (SQL) เป็นภาษาสำหรับการสืบค้นฐานข้อมูล คำถามควรมีตัวอย่างรหัสโครงสร้างตารางข้อมูลตัวอย่างและแท็กสำหรับการใช้งาน DBMS (เช่น MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 และอื่น ๆ ) หากคำถามของคุณเกี่ยวข้องกับ DBMS เฉพาะ (ใช้ส่วนขยาย / คุณลักษณะเฉพาะ) ให้ใช้แท็กของ DBMS นั้นแทน คำตอบของคำถามที่ติดแท็กด้วย SQL ควรใช้ SQL มาตรฐาน ISO / IEC

9
ใช้กรณีสำหรับ NoSQL [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ NoSQL ได้รับความสนใจอย่างมากในอุตสาหกรรมของเราเมื่อเร็ว ๆ นี้ ฉันสนใจสิ่งที่ผู้คนคิดว่าดีที่สุดในการใช้งานเคสสำหรับการใช้งานมากกว่าการจัดเก็บฐานข้อมูลเชิงสัมพันธ์ สิ่งที่ควรทริกเกอร์นักพัฒนาให้คิดว่าชุดข้อมูลเฉพาะเหมาะสมกว่าโซลูชัน NoSQL ฉันสนใจเป็นพิเศษกับMongoDBและCouchDBเนื่องจากพวกเขาดูเหมือนจะครอบคลุมมากที่สุดเกี่ยวกับการพัฒนา PHP และนั่นคือสิ่งที่ฉันให้ความสำคัญ

9
MySQL ชอบหลายค่า
ฉันมีแบบสอบถาม MySQL นี้ ฉันมีฟิลด์ฐานข้อมูลพร้อมเนื้อหานี้ sports,shopping,pool,pc,games shopping,pool,pc,games sports,pub,swimming, pool, pc, games เหตุใดข้อความค้นหาเช่นนี้จึงไม่ทำงาน ฉันต้องการฟิลด์ที่มีทั้งกีฬาหรือผับหรือทั้งสองอย่าง? SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
144 mysql  sql  sql-like 

3
วิธีใช้คำสั่ง SQL เรียงตามคำสั่งเพื่อเรียงลำดับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผล?
ฉันมีฐานข้อมูล SQLite ที่ฉันพยายามเรียงลำดับตามตัวอักษร ปัญหาคือ SQLite ดูเหมือนจะไม่พิจารณา A = a ระหว่างการเรียงลำดับดังนั้นฉันจึงได้ผลลัพธ์ดังนี้: A B C T a b c g ฉันอยากจะได้: A b B C c g T สิ่งพิเศษ SQL ต้องทำอะไรที่ฉันไม่รู้ SELECT * FROM NOTES ORDER BY title

11
SQL Server: เป็นไปได้หรือไม่ที่จะแทรกลงในสองตารางในเวลาเดียวกัน?
ฐานข้อมูลของฉันมีสามตารางเรียกว่าObject_Table, และData_Table Link_Tableตารางลิงก์ประกอบด้วยสองคอลัมน์ตัวตนของวัตถุและตัวตนของบันทึกข้อมูล ฉันต้องการคัดลอกข้อมูลจากDATA_TABLEที่ซึ่งมันถูกเชื่อมโยงไปยังข้อมูลเฉพาะตัวของวัตถุที่ระบุและแทรกบันทึกที่เกี่ยวข้องลงในData_TableและLink_Tableเพื่อระบุตัวตนวัตถุที่แตกต่างกัน ฉันสามารถทำได้โดยเลือกตัวแปรตารางและการวนซ้ำผ่านการแทรกสองครั้งสำหรับการวนซ้ำแต่ละครั้ง นี่เป็นวิธีที่ดีที่สุดที่จะทำ? แก้ไข : ฉันต้องการหลีกเลี่ยงการวนซ้ำด้วยเหตุผลสองประการข้อแรกคือฉันขี้เกียจและตาราง loop / temp ต้องการรหัสเพิ่มเติมรหัสเพิ่มเติมหมายถึงสถานที่ที่จะทำผิดและเหตุผลที่สองคือความกังวลเกี่ยวกับประสิทธิภาพ ฉันสามารถคัดลอกข้อมูลทั้งหมดในส่วนแทรกเดียว แต่จะทำให้ตารางลิงก์เชื่อมโยงไปยังระเบียนข้อมูลใหม่ที่แต่ละระเบียนมีรหัสใหม่ได้อย่างไร

8
วิธีการเลือกแถวแรกของแต่ละกลุ่ม?
ฉันมี DataFrame สร้างขึ้นดังนี้ df.groupBy($"Hour", $"Category") .agg(sum($"value") as "TotalValue") .sort($"Hour".asc, $"TotalValue".desc)) ผลลัพธ์ดูเหมือนว่า: +----+--------+----------+ |Hour|Category|TotalValue| +----+--------+----------+ | 0| cat26| 30.9| | 0| cat13| 22.1| | 0| cat95| 19.6| | 0| cat105| 1.3| | 1| cat67| 28.5| | 1| cat4| 26.8| | 1| cat13| 12.6| | 1| cat23| 5.3| | 2| cat56| 39.6| …

8
แทรกข้อมูลลงในตารางชั่วคราวด้วยแบบสอบถาม
ฉันมีแบบสอบถามที่มีอยู่ซึ่งส่งออกข้อมูลปัจจุบันและฉันต้องการที่จะแทรกลงในตารางชั่วคราว แต่มีปัญหาบางอย่างทำเช่นนั้น ใครบ้างจะมีความเข้าใจในวิธีการทำเช่นนี้? นี่คือตัวอย่าง SELECT * FROM (SELECT Received, Total, Answer, ( CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END ) AS application FROM FirstTable WHERE Recieved = 1 AND application = 'MORESTUFF' GROUP BY CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) data WHERE application LIKE isNull('%MORESTUFF%', '%') ดูเหมือนว่าจะส่งออกข้อมูลของฉันในขณะนี้ตามที่ฉันต้องการ …
144 sql  sql-server  ssms 

5
Oracle SELECT 10 อันดับแรกของเรคคอร์ด
ฉันมีปัญหาใหญ่กับคำสั่ง SQL ใน Oracle ฉันต้องการเลือก 10 อันดับแรกของระเบียนที่เรียงลำดับโดย STORAGE_DB ซึ่งไม่ได้อยู่ในรายการจากรายการเลือกอื่น อันนี้ทำงานได้ดีสำหรับบันทึกทั้งหมด: SELECT DISTINCT APP_ID, NAME, STORAGE_GB, HISTORY_CREATED, TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE FROM HISTORY WHERE STORAGE_GB IS NOT NULL AND APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009') แต่เมื่อฉันเพิ่ม AND ROWNUM <= 10 ORDER BY STORAGE_GB DESC ฉันได้รับการบันทึกแบบ …
144 sql  oracle  top-n 

11
สตริงคำสั่ง SQL เป็นตัวเลข
ฉันบันทึกตัวเลขไว้ในVARCHARฐานข้อมูล MySQL ฉันไม่สามารถสร้างได้INTเนื่องจากสถานการณ์อื่น ๆ มันกำลังทำให้พวกเขาเป็นอักขระไม่ใช่ตัวเลขในขณะที่เรียงลำดับ ในฐานข้อมูลฉันมี 1 2 3 4 5 6 7 8 9 10... ในหน้าของฉันจะแสดงรายการสั่งซื้อดังนี้: 1 10 2 3 4 5 6 7 8 9 ฉันจะทำให้มันปรากฏเรียงตามตัวเลขจากน้อยไปมากได้อย่างไร

9
วิธีเขียนโปรแกรมฐานข้อมูลอย่างง่าย [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันสนใจที่จะเรียนรู้ว่าเอ็นจิ้นฐานข้อมูลทำงานอย่างไร (เช่น internals ของมัน) ฉันรู้ว่าโครงสร้างข้อมูลพื้นฐานส่วนใหญ่สอนใน CS (ต้นไม้ตารางแฮชรายการ ฯลฯ ) รวมถึงความเข้าใจที่ดีเกี่ยวกับทฤษฎีคอมไพเลอร์ (และใช้ล่ามที่ง่ายมาก) แต่ฉันไม่เข้าใจว่าจะไปอย่างไร เกี่ยวกับการเขียนเอ็นจิ้นฐานข้อมูล ฉันได้ค้นหาบทช่วยสอนในเรื่องและฉันไม่สามารถหาได้ดังนั้นฉันหวังว่าจะมีคนอื่นชี้ให้ฉันในทิศทางที่ถูกต้อง โดยทั่วไปฉันต้องการข้อมูลเกี่ยวกับสิ่งต่อไปนี้: วิธีจัดเก็บข้อมูลภายใน (เช่นวิธีแสดงตาราง ฯลฯ ) เครื่องมือค้นหาข้อมูลที่ต้องการได้อย่างไร (เช่นเรียกใช้แบบสอบถามแบบใช้เลือกข้อมูล) วิธีการแทรกข้อมูลในวิธีที่รวดเร็วและมีประสิทธิภาพ และหัวข้ออื่น ๆ ที่อาจเกี่ยวข้องกับเรื่องนี้ มันไม่จำเป็นต้องเป็นฐานข้อมูลบนดิสก์ - แม้แต่ฐานข้อมูลในหน่วยความจำก็ใช้ได้ (ถ้าทำได้ง่ายกว่า) เพราะฉันแค่ต้องการเรียนรู้หลักการที่อยู่เบื้องหลัง ขอบคุณมากสำหรับความช่วยเหลือของคุณ.

9
SQL - ใช้นามแฝงใน Group By
แค่อยากรู้เกี่ยวกับไวยากรณ์ SQL ดังนั้นถ้าฉันมี SELECT itemName as ItemName, substring(itemName, 1,1) as FirstLetter, Count(itemName) FROM table1 GROUP BY itemName, FirstLetter สิ่งนี้จะไม่ถูกต้องเพราะ GROUP BY itemName, FirstLetter ควรจะเป็น GROUP BY itemName, substring(itemName, 1,1) แต่ทำไมเราไม่สามารถใช้อดีตเพื่อความสะดวกได้?
143 sql  group-by  alias 

17
ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต '/tmp/mysql.sock' (2)
ฉันติดตั้งเซิร์ฟเวอร์ MySQL และพยายามเชื่อมต่อ แต่ได้รับข้อผิดพลาด: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) ฉันตรวจสอบไดเรกทอรี / tmp ของฉันแล้วและไม่มี mysql.sock ฉันไม่สามารถหา mysql.sock ได้ทุกที่ ฉันอ่านว่ามันอาจจะอยู่ใน /var/lib/mysql/mysql.sock แต่ฉันตรวจสอบที่นั่นด้วยและไม่มีแม้กระทั่งไดเรกทอรี mysql เพียงบางสิ่งที่ postfix ภายใน / lib ใครสามารถช่วยฉันแก้ปัญหานี้ได้บ้าง
143 mysql  sql 

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

9
หนีอักขระเครื่องหมายและในสตริง SQL
ฉันกำลังพยายามค้นหาแถวตามชื่อในฐานข้อมูล sql ของฉันและมีเครื่องหมายและ ฉันพยายามตั้งค่าอักขระเลี่ยงแล้วหลบหนีจากเครื่องหมายและด้วยเหตุผลบางอย่างนี้ไม่ทำงานและฉันไม่แน่ใจว่าปัญหาของฉันคืออะไร Set escape '\' select * from V1144engine.T_nodes where node_id in( select node2_id from V1144engine.T_edges where node1_id in( select node2_id from V1144engine.T_edges where node1_id in( select node2_id from V1144engine.T_edges where node1_id = (select node_id from V1144engine.T_nodes where node_name = 'Geometric Vectors \& Matrices'))) and edge_type_id = 1) …
143 sql  oracle  escaping  sqlplus 

16
ฉันจะสปูลไปยังไฟล์ที่จัดรูปแบบ CSV โดยใช้ SQLPLUS ได้อย่างไร
ฉันต้องการแยกข้อความค้นหาบางส่วนเป็นรูปแบบเอาต์พุต CSV น่าเสียดายที่ฉันไม่สามารถใช้ไคลเอนต์ SQL แฟนซีหรือภาษาใดก็ได้ ฉันต้องใช้ SQLPLUS ฉันต้องทำอย่างไร?
143 sql  oracle  csv  sqlplus 

11
วิธีที่เร็วที่สุดในการตรวจสอบว่ามีบันทึกอยู่หรือไม่
ตามที่ชื่อแนะนำ ... ฉันกำลังพยายามหาวิธีที่เร็วที่สุดโดยมีค่าใช้จ่ายน้อยที่สุดเพื่อดูว่ามีระเบียนอยู่ในตารางหรือไม่ แบบสอบถามตัวอย่าง: SELECT COUNT(*) FROM products WHERE products.id = ?; vs SELECT COUNT(products.id) FROM products WHERE products.id = ?; vs SELECT products.id FROM products WHERE products.id = ?; สมมติว่า?มีการสลับกับ'TB100'... ทั้งแบบสอบถามที่หนึ่งและที่สองจะส่งกลับผลลัพธ์เดียวกัน (พูดว่า ... 1สำหรับการสนทนานี้) แบบสอบถามล่าสุดจะส่งคืน'TB100'ตามที่คาดไว้หรือไม่มีสิ่งใดหากidไม่มีอยู่ในตาราง จุดประสงค์คือการคิดออกว่าidอยู่ในตารางหรือไม่ มิฉะนั้นโปรแกรมจะแทรกเร็กคอร์ดต่อไปถ้าเป็นเช่นนั้นโปรแกรมจะข้ามหรือดำเนินการค้นหา UPDATE ตามตรรกะของโปรแกรมอื่นที่อยู่นอกขอบเขตของคำถามนี้ ไหนเร็วกว่าและมีค่าใช้จ่ายน้อยลง (ซึ่งจะถูกทำซ้ำหลายหมื่นครั้งต่อการรันโปรแกรมและจะทำงานหลายครั้งต่อวัน) (การรันเคียวรีนี้เทียบกับ M $ SQL Server จาก Java ผ่านทาง …

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