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

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

18
รับเร็กคอร์ดที่มีค่าสูงสุดสำหรับผลลัพธ์ SQL กลุ่มที่จัดกลุ่มแต่ละกลุ่ม
คุณจะได้รับแถวที่มีค่าสูงสุดสำหรับแต่ละชุดที่จัดกลุ่มได้อย่างไร ฉันเคยเห็นรูปแบบที่ซับซ้อนเกินไปของคำถามนี้และไม่มีคำตอบที่ดีเลย ฉันพยายามรวบรวมตัวอย่างที่ง่ายที่สุดเท่าที่จะทำได้: จากตารางด้านล่างด้วยคอลัมน์บุคคลกลุ่มและอายุคุณจะได้คนที่เก่าแก่ที่สุดในแต่ละกลุ่มอย่างไร (เน็คไทภายในกลุ่มควรให้ผลลัพธ์ตัวอักษรแรก) Person | Group | Age --- Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 ชุดผลลัพธ์ที่ต้องการ: Shawn | 1 | 42 Laura | 2 | 39

18
แบบสอบถามเซิร์ฟเวอร์ SQL เพื่อรับรายการคอลัมน์ในตารางพร้อมกับชนิดข้อมูล, ข้อ จำกัด ไม่ใช่ NULL และคีย์หลัก
ฉันต้องเขียนแบบสอบถามบนเซิร์ฟเวอร์ SQL เพื่อรับรายการคอลัมน์ในตารางเฉพาะประเภทข้อมูลที่เชื่อมโยง (มีความยาว) และหากไม่เป็นโมฆะ และฉันได้ทำสิ่งนี้มาก แต่ตอนนี้ฉันต้องได้รับในตารางเดียวกันกับคอลัมน์ - TRUEถ้าคอลัมน์นั้นเป็นคีย์หลัก ฉันจะทำสิ่งนี้ได้อย่างไร ผลลัพธ์ที่คาดหวังของฉันคือ: Column name | Data type | Length | isnull | Pk

18
เลือกจำนวน (*) จากหลายตาราง
ฉันจะเลือกcount(*)จากสองตารางที่แตกต่างกัน (เรียกพวกเขาtab1และtab2) มีผลดังนี้: Count_1 Count_2 123 456 ฉันเคยลองแล้ว: select count(*) Count_1 from schema.tab1 union all select count(*) Count_2 from schema.tab2 แต่สิ่งที่ฉันมีคือ: Count_1 123 456
229 sql  oracle  count 

6
การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ใน Oracle
พฤติกรรมเริ่มต้นของLIKEและผู้ประกอบการเปรียบเทียบ=อื่น ๆ เป็นกรณี ๆ ไป เป็นไปได้หรือไม่ที่จะทำให้มันเป็นตัวพิมพ์เล็ก

22
ฉันจะสอบถาม sql สำหรับวันที่บันทึกล่าสุดสำหรับผู้ใช้แต่ละคนได้อย่างไร
ฉันมีตารางที่เป็นรายการคอลเลกชันว่าเมื่อผู้ใช้เข้าสู่ระบบ username, date, value -------------------------- brad, 1/2/2010, 1.1 fred, 1/3/2010, 1.0 bob, 8/4/2009, 1.5 brad, 2/2/2010, 1.2 fred, 12/2/2009, 1.3 etc.. ฉันจะสร้างแบบสอบถามที่จะให้วันที่ล่าสุดแก่ผู้ใช้แต่ละคนได้อย่างไร อัปเดต:ฉันลืมว่าฉันต้องมีค่าที่ตรงกับวันที่ล่าสุด

30
ฟังก์ชั่นการคำนวณค่ามัธยฐานใน SQL Server
ตามMSDN , ค่ามัธยฐานไม่พร้อมใช้งานเป็นฟังก์ชันรวมใน Transact-SQL อย่างไรก็ตามฉันต้องการค้นหาว่าเป็นไปได้ที่จะสร้างฟังก์ชันนี้หรือไม่ (โดยใช้ฟังก์ชั่นสร้างการรวมฟังก์ชันที่ผู้ใช้กำหนดเองหรือวิธีอื่น) อะไรจะเป็นวิธีที่ดีที่สุด (ถ้าเป็นไปได้) ในการทำเช่นนี้ - อนุญาตให้มีการคำนวณค่ามัธยฐาน (สมมติว่าเป็นชนิดข้อมูลตัวเลข) ในแบบสอบถามรวม?

10
MongoDB ไม่สอดคล้องกับกรดอะไรก่อน v4 หมายถึงอะไร?
ฉันไม่ใช่ผู้เชี่ยวชาญด้านฐานข้อมูลและไม่มีพื้นฐานด้านวิทยาศาสตร์คอมพิวเตอร์ที่เป็นทางการดังนั้นโปรดอดทนกับฉัน ฉันต้องการทราบชนิดของสิ่งต่าง ๆ ในโลกแห่งความเป็นจริงที่อาจเกิดขึ้นได้หากคุณใช้MongoDB เวอร์ชันเก่าก่อนหน้า v4ซึ่งไม่สอดคล้องกับกรด สิ่งนี้ใช้กับฐานข้อมูลที่ไม่สอดคล้อง ACID ใด ๆ ฉันเข้าใจว่า MongoDB สามารถดำเนินการปรมาณูได้แต่พวกเขาไม่ "สนับสนุนการล็อกแบบดั้งเดิมและการทำธุรกรรมที่ซับซ้อน" ส่วนใหญ่ด้วยเหตุผลด้านประสิทธิภาพ ฉันยังเข้าใจถึงความสำคัญของการทำธุรกรรมฐานข้อมูลและตัวอย่างของเวลาที่ฐานข้อมูลของคุณเป็นธนาคารและคุณกำลังอัปเดตหลายระเบียนที่จำเป็นต้องซิงค์คุณต้องการให้ธุรกรรมกลับไปสู่สถานะเริ่มต้นหากมี ไฟฟ้าดับดังนั้นเครดิตเท่ากับการซื้อ ฯลฯ แต่เมื่อฉันได้รับการสนทนาเกี่ยวกับ MongoDB พวกเราที่ไม่ทราบรายละเอียดทางเทคนิคเกี่ยวกับวิธีการนำฐานข้อมูลไปใช้จริง ๆ MongoDB นั้นเร็วกว่า MySQL และ Postgres แต่มีโอกาสเล็กน้อยเช่น 1 ในล้านที่ว่า "จะไม่บันทึกอย่างถูกต้อง" ส่วน "ไม่บันทึกอย่างถูกต้อง" นั้นอ้างถึงความเข้าใจนี้: หากไฟดับในทันทีที่คุณเขียนถึง MongoDB มีโอกาสสำหรับบันทึกที่เฉพาะเจาะจง (บอกว่าคุณกำลังติดตามจำนวนหน้าที่มีการเปิดในเอกสารที่มี 10 แอตทริบิวต์ แต่ละรายการ) ว่าเอกสารอย่างใดอย่างหนึ่งเท่านั้นบันทึก 5 ของคุณลักษณะ ... ซึ่งหมายความว่าเมื่อเวลาผ่านไปเคาน์เตอร์นับจำนวนการดูหน้าเว็บของคุณจะ "ปิด" เล็กน้อย คุณจะไม่มีทางรู้ได้เลยว่าคุณรู้ว่ามันถูกต้อง 99.999% …
226 sql  mongodb  acid  database  nosql 

14
วิธีจัดการกับชื่อคอลัมน์ SQL ที่ดูเหมือนคำสำคัญ SQL
fromหนึ่งในคอลัมน์ของฉันถูกเรียกว่า ฉันไม่สามารถเปลี่ยนชื่อได้เพราะฉันไม่ได้ทำ ฉันได้รับอนุญาตให้ทำสิ่งที่ชอบSELECT from FROM TableNameหรือมีไวยากรณ์พิเศษเพื่อหลีกเลี่ยงการ SQL Server สับสนหรือไม่
226 sql  sql-server 

11
วิธีการสุ่มเลือกแถวใน SQL?
ฉันใช้ MSSQL Server 2005 ใน db ของฉันฉันมีตาราง "customerNames" ซึ่งมีสองคอลัมน์ "Id" และ "ชื่อ" และประมาณ 1,000 ผลลัพธ์ ฉันกำลังสร้างฟังก์ชั่นที่ฉันต้องเลือก 5 ลูกค้าแบบสุ่มทุกครั้ง ทุกคนสามารถบอกวิธีสร้างแบบสอบถามซึ่งจะได้รับสุ่ม 5 แถว (Id และชื่อ) ทุกครั้งเมื่อมีการดำเนินการค้นหา
226 sql  database  random 

10
ฉันจะค้นหาระหว่างสองวันโดยใช้ MySQL ได้อย่างไร
แบบสอบถามต่อไปนี้: SELECT * FROM `objects` WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55') ไม่มีอะไรคืน ฉันควรมีข้อมูลมากเกินพอที่จะให้แบบสอบถามทำงานได้ ผมทำอะไรผิดหรือเปล่า?
225 mysql  sql 

13
คำสั่ง INSERT ขัดแย้งกับข้อ จำกัด KEY ต่างประเทศ - SQL Server
ฉันได้รับข้อผิดพลาดดังต่อไปนี้ คุณจะกรุณาช่วยฉันหน่อยได้ไหม? ข่าวสารเกี่ยวกับ 547 ระดับ 16 สถานะ 0 บรรทัด 1 คำสั่ง INSERT ขัดแย้งกับข้อ จำกัด ของคีย์ต่างประเทศ "FK_Sup_Item_Sup_Item_Cat" ความขัดแย้งเกิดขึ้นในฐานข้อมูล "dev_bo", ตาราง "dbo.Sup_Item_Cat" คำสั่งถูกยกเลิก รหัส: insert into sup_item (supplier_id, sup_item_id, name, sup_item_cat_id, status_code, last_modified_user_id, last_modified_timestamp, client_id) values (10162425, 10, 'jaiso', '123123', 'a', '12', '2010-12-12', '1062425') คอลัมน์สุดท้ายclient_idทำให้เกิดข้อผิดพลาด ฉันพยายามใส่ค่าที่มีอยู่แล้วในdbo.Sup_Item_Catคอลัมน์ให้สอดคล้องกับ sup_item .. แต่ไม่มีความสุข :-(

10
ความแตกต่างระหว่างการเข้าร่วมซ้ายและขวาเข้าร่วมใน SQL Server
ฉันรู้เกี่ยวกับการรวมใน SQL Server ตัวอย่างเช่น. มีสองตารางคือ Table1, Table2 โครงสร้างตารางของพวกเขามีดังนี้ create table Table1 (id int, Name varchar (10)) create table Table2 (id int, Name varchar (10)) ข้อมูล Table1 ดังต่อไปนี้: Id Name ------------- 1 A 2 B ข้อมูล Table2 ดังต่อไปนี้: Id Name ------------- 1 A 2 B 3 C หากฉันรันทั้งคำสั่ง SQL ที่กล่าวถึงด้านล่างผลลัพธ์ทั้งสองจะเหมือนกัน select …


11
วิธีใช้การนับและจัดกลุ่มตามที่คำสั่ง select เดียวกัน
ฉันมีแบบสอบถามเลือก SQL ที่มีกลุ่มโดย ฉันต้องการนับระเบียนทั้งหมดหลังจากกลุ่มตามคำสั่ง มีวิธีนี้โดยตรงจาก sql ตัวอย่างเช่นมีตารางที่มีผู้ใช้ฉันต้องการที่จะเลือกเมืองที่แตกต่างกันและรวมจำนวนผู้ใช้ select town, count(*) from user group by town ฉันต้องการมีคอลัมน์ที่มีเมืองทั้งหมดและอีกคอลัมน์หนึ่งที่มีจำนวนผู้ใช้ในทุกแถว ตัวอย่างผลการมี 3 เมืองและผู้ใช้ทั้งหมด 58 คนคือ: Town Count Copenhagen 58 NewYork 58 Athens 58
223 sql  count  group-by 

4
มีความแตกต่างด้านประสิทธิภาพระหว่าง CTE, Sub-Query, Temporary Table หรือ Table Variable หรือไม่?
ในคำถาม SO ที่ยอดเยี่ยมนี้ความแตกต่างระหว่างCTEและsub-queriesถูกกล่าวถึง ฉันต้องการถามเฉพาะ: แต่ละเหตุการณ์ต่อไปนี้มีประสิทธิภาพมากขึ้น / เร็วขึ้นในสถานการณ์ใด CTE แบบสอบถามย่อย ตารางชั่วคราว ตัวแปรตาราง ตามเนื้อผ้าฉันได้ใช้ความพยายามอย่างมากtemp tablesในการพัฒนาstored proceduresเนื่องจากดูเหมือนว่าจะสามารถอ่านได้มากกว่าแบบสอบถามย่อยแบบพัน Non-recursive CTEสรุปชุดข้อมูลได้ดีมากและอ่านได้มาก แต่มีสถานการณ์เฉพาะที่ใคร ๆ สามารถพูดได้ว่าพวกเขาจะทำงานได้ดีขึ้นหรือไม่ หรือว่าเป็นกรณีที่ต้องทำตัวตาม ๆ ตัวเลือกต่าง ๆ เพื่อหาทางออกที่มีประสิทธิภาพที่สุด? แก้ไข ฉันเพิ่งได้รับแจ้งว่าในแง่ของประสิทธิภาพตารางชั่วคราวเป็นตัวเลือกแรกที่ดีเนื่องจากมีฮิสโตแกรมที่เกี่ยวข้องเช่นสถิติ

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