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

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

10
การแก้ไขฐานข้อมูลล้มเหลวเนื่องจากไม่สามารถวางล็อกบนฐานข้อมูลได้
ฉันต้องรีสตาร์ทฐานข้อมูลเนื่องจากกระบวนการบางอย่างไม่ทำงาน แผนของฉันคือทำให้ออฟไลน์และกลับมาออนไลน์อีกครั้ง ฉันกำลังพยายามทำสิ่งนี้ใน Sql Server Management Studio 2008: use master; go alter database qcvalues set single_user with rollback immediate; alter database qcvalues set multi_user; go ฉันได้รับข้อผิดพลาดเหล่านี้: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later. …

4
ตัวอย่างชีวิตจริงเมื่อใดควรใช้ OUTER / CROSS APPLY ใน SQL
ฉันได้ดูCROSS / OUTER APPLYกับเพื่อนร่วมงานคนหนึ่งและเรากำลังดิ้นรนเพื่อหาตัวอย่างในชีวิตจริงว่าจะนำไปใช้ที่ไหน ฉันใช้เวลาค่อนข้างมากในการดูว่าเมื่อไหร่ควรใช้ Cross Apply ผ่าน Inner Join และ googling แต่ตัวอย่างหลัก (เท่านั้น) ดูค่อนข้างแปลก (ใช้ rowcount จากตารางเพื่อกำหนดจำนวนแถวที่จะเลือกจากตารางอื่น) ฉันคิดว่าสถานการณ์นี้อาจได้รับประโยชน์จากOUTER APPLY: ตารางรายชื่อ (มี 1 บันทึกสำหรับแต่ละรายชื่อ) ตารางรายการการสื่อสาร (สามารถมีโทรศัพท์โทรสารอีเมลสำหรับผู้ติดต่อแต่ละราย) แต่การใช้ subqueries แสดงออกตารางทั่วไปOUTER JOINด้วยRANK()และOUTER APPLYทั้งหมดดูเหมือนจะดำเนินการอย่างเท่าเทียมกัน APPLYฉันคาดเดาที่นี้หมายถึงสถานการณ์ไม่สามารถใช้ได้กับ โปรดแบ่งปันตัวอย่างชีวิตจริงและช่วยอธิบายคุณลักษณะนี้!

3
ฉันจะส่งคืนแถวที่มีค่าเฉพาะก่อนได้อย่างไร
ฉันต้องการให้แบบสอบถามของฉันส่งคืนแถวของตารางที่คอลัมน์มีค่าเฉพาะก่อนจากนั้นส่งคืนส่วนที่เหลือของแถวตามตัวอักษร ถ้าฉันมีตารางบางอย่างเช่นตัวอย่างนี้: - Table: Users - id - name - city - 1 George Seattle - 2 Sam Miami - 3 John New York - 4 Amy New York - 5 Eric Chicago - 6 Nick New York และการใช้ตารางนั้นฉันต้องการให้แบบสอบถามของฉันส่งคืนแถวที่มีนิวยอร์กก่อนจากนั้นแถวที่เหลือตามตัวอักษรตามเมือง สามารถทำได้โดยใช้แบบสอบถามเดียวหรือไม่?
124 sql  sql-order-by 

12
เลือก * เทียบกับคอลัมน์เลือก
ถ้าฉันต้องการเพียง 2/3 คอลัมน์และฉันสอบถามSELECT *แทนที่จะให้คอลัมน์เหล่านั้นในคิวรีที่เลือกมีการลดประสิทธิภาพการทำงานเกี่ยวกับ I / O หรือหน่วยความจำมาก / น้อยหรือไม่ ค่าโสหุ้ยเครือข่ายอาจปรากฏขึ้นหากฉันเลือก * โดยไม่จำเป็น แต่ในการดำเนินการที่เลือกเอ็นจินฐานข้อมูลจะดึงอะตอมทูเพิลจากดิสก์เสมอหรือดึงเฉพาะคอลัมน์ที่ร้องขอในการดำเนินการเลือก ถ้ามันดึงทูเปิลเสมอค่าใช้จ่าย I / O จะเท่ากัน ในขณะเดียวกันอาจมีการใช้หน่วยความจำสำหรับการแยกคอลัมน์ที่ร้องขอออกจากทูเปิลหากดึงทูเพิล ดังนั้นหากเป็นกรณีนี้ให้เลือก someColumn จะมีหน่วยความจำเหนือศีรษะมากกว่าที่เลือก *
124 sql  performance 

7
ฟิลด์อัพเดต SQL ของตารางหนึ่งจากฟิลด์ของอีกตารางหนึ่ง
ฉันมีสองโต๊ะ: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] Aจะเป็นส่วนย่อยของเสมอB(หมายถึงคอลัมน์ทั้งหมดAอยู่ในด้วยB) ฉันต้องการที่จะปรับปรุงการบันทึกที่มีเฉพาะที่IDอยู่ในBที่มีข้อมูลของพวกเขาจากคอลัมน์ทั้งหมดA Aสิ่งนี้IDมีอยู่ทั้งในAและB. มีUPDATEไวยากรณ์หรือวิธีอื่นใดที่ทำได้โดยไม่ต้องระบุชื่อคอลัมน์เพียงพูดว่า"set all column of A" ? ฉันใช้ PostgreSQL ดังนั้นจึงยอมรับคำสั่งที่ไม่ได้มาตรฐาน (อย่างไรก็ตามไม่แนะนำ)

12
SQL - เลือก 10 แถวแรกเท่านั้น?
ฉันจะเลือกเฉพาะผลลัพธ์ 10 รายการแรกของแบบสอบถามได้อย่างไร ฉันต้องการแสดงเฉพาะผลลัพธ์ 10 รายการแรกจากข้อความค้นหาต่อไปนี้: SELECT a.names, COUNT(b.post_title) AS num FROM wp_celebnames a JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0 WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) GROUP BY a.names ORDER BY num DESC
124 sql 

12
เกิดข้อผิดพลาดใน MySQL เมื่อตั้งค่าเริ่มต้นสำหรับ DATE หรือ DATETIME
ฉันใช้ MySql Server 5.7.11 และประโยคนี้: updated datetime NOT NULL DEFAULT '0000-00-00 00:00:00' จะไม่ทำงาน ให้ข้อผิดพลาด: ERROR 1067 (42000): Invalid default value for 'updated' แต่สิ่งต่อไปนี้: updated datetime NOT NULL DEFAULT '1000-01-01 00:00:00' ใช้งานได้จริง กรณีเดียวกันสำหรับ DATE ในฐานะที่เป็นsidenoteมีการกล่าวถึงในเอกสาร MySQL : ประเภท DATE ใช้สำหรับค่าที่มีส่วนวันที่ แต่ไม่มีส่วนเวลา MySQL ดึงและแสดงค่า DATE ในรูปแบบ 'YYYY-MM-DD' ช่วงที่รองรับคือ '1000-01-01' ถึง '9999-12-31' แม้ว่าพวกเขาจะพูดว่า: …
124 mysql  sql  date  datetime  console 

4
มีความแตกต่างระหว่าง“! =” และ“ <>” ใน Oracle Sql หรือไม่
ฉันต้องการทราบว่ามีความแตกต่างระหว่างตัวnot equalดำเนินการทั้งสอง&lt;&gt;และ!=ใน Oracle หรือไม่ มีบางกรณีที่สามารถให้ผลลัพธ์ที่แตกต่างกันหรือประสิทธิภาพที่แตกต่างกันได้หรือไม่?
123 sql  oracle 

10
การใช้ยูเนี่ยนและลำดับตามข้อใน mysql
ฉันต้องการใช้ order by กับ union ในแบบสอบถาม mysql ฉันกำลังดึงข้อมูลประเภทต่างๆตามเกณฑ์ที่แตกต่างกันจากตารางตามระยะทางสำหรับการค้นหาบนไซต์ของฉัน คำค้นหาแรกที่เลือกจะแสดงผลข้อมูลที่เกี่ยวข้องกับการค้นหาสถานที่ที่แน่นอน คำค้นหาที่เลือกครั้งที่ 2 จะส่งคืนข้อมูลที่เกี่ยวข้องกับระยะทางภายใน 5 กม. จากสถานที่ที่ค้นหา แบบสอบถามแบบเลือกที่ 3 จะส่งคืนข้อมูลที่เกี่ยวข้องกับระยะทางภายใน 5-15 กม. จากสถานที่ที่ค้นหา จากนั้นฉันใช้ยูเนี่ยนเพื่อรวมผลลัพธ์ทั้งหมดและแสดงบนเพจที่มีเพจจิ้ง ภายใต้หัวข้อที่เหมาะสมเป็น'ผลการค้นหาที่แน่นอน' , 'ผลลัพธ์ภายใน 5 กม.'เป็นต้น ตอนนี้ฉันต้องการจัดเรียงผลลัพธ์ตาม id หรือ add_date แต่เมื่อฉันเพิ่มลำดับตามส่วนคำสั่งที่ส่วนท้ายของแบบสอบถามของฉัน (query1 union query 2 union query 3 order by add_date) มันเรียงลำดับผลลัพธ์ทั้งหมด แต่สิ่งที่ฉันต้องการคือควรเรียงลำดับภายใต้แต่ละหัวข้อ
123 mysql  sql  sql-order-by  union 

4
ข้อผิดพลาด SQL Server ': setvar'
ฉันพยายามสร้างตัวแปรสคริปต์ใน T-SQL ดังนี้: /* Deployment script for MesProduction_Preloaded_KLM_MesSap */ GO SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON; SET NUMERIC_ROUNDABORT OFF; GO :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap" อย่างไรก็ตามเมื่อฉันเรียกใช้สิ่งนี้ฉันได้รับข้อผิดพลาดที่ระบุว่า 'ไม่ถูกต้องไวยากรณ์ใกล้': ' ผมทำอะไรผิดหรือเปล่า?
123 sql  sql-server  tsql 

6
แบบสอบถาม SQL เพื่อค้นหาเรกคอร์ดที่มี ID ไม่อยู่ในตารางอื่น
ฉันมีตารางสองตารางที่มีคีย์หลักที่ผูกไว้ในฐานข้อมูลและฉันต้องการค้นหาชุดที่ไม่ปะติดปะต่อระหว่างพวกเขา ตัวอย่างเช่น, Table1มีคอลัมน์ ( ID, Name) และข้อมูลตัวอย่าง:(1 ,John), (2, Peter), (3, Mary) Table2มีคอลัมน์ ( ID, Address) และข้อมูลตัวอย่าง:(1, address2), (2, address2) ดังนั้นวิธีที่ฉันจะสร้างแบบสอบถาม SQL เพื่อให้สามารถดึงข้อมูลแถวที่มี ID จากที่ไม่ได้อยู่ในtable1 table2กรณีนี้(3, Mary)ควรส่งคืนหรือไม่? ps ID เป็นคีย์หลักสำหรับสองตารางนั้น ขอบคุณล่วงหน้า.
123 sql  database  postgresql 

6
ฉันจะวางตัวแปรตารางใน SQL-Server ได้อย่างไร ฉันควรทำสิ่งนี้หรือไม่?
ฉันมีตัวแปรตารางในสคริปต์ (ไม่ใช่โพรซีเดอร์ที่เก็บไว้) สองคำถาม: ฉันจะวางตัวแปรตารางได้อย่างไร Drop Table @varName ให้ข้อผิดพลาด "ไม่ถูกต้อง snytax" ฉันควรทำสิ่งนี้เสมอหรือไม่? ฉันได้ยินว่ามันเป็นแนวทางปฏิบัติที่ดี มันจำเป็นมากสำหรับสคริปต์ขนาดเล็กเช่นนี้หรือไม่? นี่คือรหัสของฉัน: Declare @projectList table( name varchar(40) NOT NULL); Insert Into @projectList Values ('BCR-00021') Select * From @projectList Drop Table @projectList -- does not work

2
เป็นไปได้หรือไม่ที่ส่วนคำสั่ง SQL Output ส่งคืนคอลัมน์ที่ไม่ได้ถูกแทรก
ฉันได้ทำการแก้ไขฐานข้อมูลบางอย่างและจำเป็นต้องย้ายข้อมูลเก่าไปยังตารางใหม่ สำหรับสิ่งนั้นฉันต้องกรอกข้อมูลในตาราง (ReportOptions) โดยนำข้อมูลจากตารางเดิม (แบบฝึกหัด) และเติมตารางกลางที่สอง (PracticeReportOption) ReportOption (ReportOptionId int PK, field1, field2...) Practice (PracticeId int PK, field1, field2...) PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...) ฉันทำแบบสอบถามเพื่อรับข้อมูลทั้งหมดที่จำเป็นในการย้ายจาก Practice ไปยัง ReportOptions แต่ฉันมีปัญหาในการกรอกตารางกลาง --Auxiliary tables DECLARE @ReportOption TABLE (PracticeId int /*This field is not on the actual …
123 sql  sql-server 

11
คุณจะคัดลอกระเบียนในตาราง SQL ได้อย่างไร แต่จะสลับ id เฉพาะของแถวใหม่
คำถามนี้ใกล้เคียงกับสิ่งที่ฉันต้องการ แต่สถานการณ์ของฉันแตกต่างกันเล็กน้อย ตารางต้นทางและตารางปลายทางเหมือนกันและคีย์หลักคือตัวบ่งชี้เฉพาะ (guid) เมื่อฉันลองสิ่งนี้: insert into MyTable select * from MyTable where uniqueId = @Id; เห็นได้ชัดว่าฉันได้รับการละเมิดข้อ จำกัด ของคีย์หลักเนื่องจากฉันพยายามคัดลอกคีย์หลัก อันที่จริงฉันไม่ต้องการคัดลอกคีย์หลักเลย แต่ฉันต้องการสร้างใหม่ นอกจากนี้ฉันต้องการคัดลอกช่องบางช่องและปล่อยให้ช่องอื่นว่าง เพื่อให้เรื่องซับซ้อนมากขึ้นฉันต้องใช้คีย์หลักของระเบียนต้นฉบับและแทรกลงในฟิลด์อื่นในสำเนา (ฟิลด์ PreviousId) ฉันแน่ใจว่ามีวิธีแก้ปัญหาง่ายๆสำหรับเรื่องนี้ฉันไม่รู้ TSQL มากพอที่จะรู้ว่ามันคืออะไร

12
แบบสอบถาม Oracle เพื่อดึงชื่อคอลัมน์
ฉันมีแบบสอบถาม mySQL เพื่อรับคอลัมน์จากตารางดังนี้: String sqlStr="select column_name from information_schema.COLUMNS where table_name='users' and table_schema='"+_db+"' and column_name not in ('password','version','id')" ฉันจะเปลี่ยนข้อความค้นหาข้างต้นในฐานข้อมูล Oracle 11g ได้อย่างไร ฉันต้องการรับชื่อคอลัมน์เป็นชุดผลลัพธ์สำหรับตาราง 'ผู้ใช้' โดยไม่รวมคอลัมน์บางคอลัมน์โดยระบุสคีมา ตอนนี้ฉันมีตารางทั้งหมดในพื้นที่ตารางใหม่ฉันจึงระบุชื่อพื้นที่ตารางแทนชื่อสคีมาหรือไม่ มี HQL ทั่วไปสำหรับสิ่งนี้ด้วยหรือไม่? ในฐานข้อมูล Oracle ใหม่ของฉัน (ฉันยังใหม่กับ Oracle) ฉันมีเพียงชื่อพื้นที่ตารางดังนั้นจึงเทียบเท่ากับชื่อสคีมา (ในเชิงเหตุผล?)
123 sql  oracle 

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