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

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

8
DISTINCT สำหรับคอลัมน์เดียวเท่านั้น
สมมติว่าฉันมีคำถามต่อไปนี้ SELECT ID, Email, ProductName, ProductModel FROM Products ฉันจะแก้ไขเพื่อที่จะไม่ได้รับอีเมล์ที่ซ้ำกันได้อย่างไร กล่าวอีกนัยหนึ่งเมื่อหลายแถวมีอีเมลเดียวกันฉันต้องการให้ผลลัพธ์รวมแถวเดียวเท่านั้น (ควรเป็นแถวสุดท้าย) ควรอนุญาตให้ทำซ้ำในคอลัมน์อื่น ข้อเหมือนDISTINCTและGROUP BYดูเหมือนจะทำงานในแถวทั้งหมด ดังนั้นฉันไม่แน่ใจว่าวิธีการนี้
156 sql  sql-server 

4
สัญลักษณ์แทน PostgreSQL เช่นเดียวกับรายการคำใด ๆ
ฉันมีรายการคำศัพท์ประมาณ 25 คำ ฉันมีฟิลด์ varchar ใน PostgreSQL ['foo', 'bar', 'baz']สมมติว่ารายการที่เป็น ฉันต้องการค้นหาแถวในตารางของฉันที่มีคำใดคำหนึ่งเหล่านั้น สิ่งนี้จะได้ผล แต่ฉันต้องการบางสิ่งที่หรูหรากว่า select * from table where (lower(value) like '%foo%' or lower(value) like '%bar%' or lower(value) like '%baz%')
156 sql  postgresql 

11
ฟังก์ชันอันดับใน MySQL
ฉันต้องการค้นหาอันดับของลูกค้า ที่นี่ฉันเพิ่มแบบสอบถาม SQL มาตรฐาน ANSI ที่สอดคล้องกันสำหรับความต้องการของฉัน โปรดช่วยฉันแปลงเป็น MySQL SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender], FirstName, Age, Gender FROM Person มีฟังก์ชั่นเพื่อค้นหาอันดับใน MySQL หรือไม่
155 mysql  sql  rank 

4
ผู้ประกอบการ“ (+)” ของออราเคิล
ฉันกำลังตรวจสอบคำสั่ง SQL เก่าบางส่วนเพื่อจุดประสงค์ในการจัดทำเอกสารและอาจปรับปรุงให้ดีขึ้น DBMS คือ Oracle ฉันไม่เข้าใจข้อความที่อ่านเช่นนี้ select ... from a,b where a.id=b.id(+) ฉันสับสนเกี่ยวกับ(+)โอเปอเรเตอร์และไม่สามารถรับได้ที่ฟอรัมใด ๆ ... (การค้นหา + ภายในเครื่องหมายคำพูดไม่ทำงานเช่นกัน) อย่างไรก็ตามฉันใช้ 'อธิบายแผน' ของ SQLDeveloper และฉันได้ผลลัพธ์ที่บอกว่าHASH JOIN, RIGHT OUTERเป็นต้น จะมีความแตกต่างหรือไม่หากฉันลบ(+)โอเปอเรเตอร์เมื่อสิ้นสุดการสืบค้น ฐานข้อมูลต้องเป็นไปตามเงื่อนไข (เช่นมีดัชนีบางอย่างหรือไม่) ก่อนที่จะ(+)สามารถใช้งานได้หรือไม่? มันจะมีประโยชน์อย่างมากหากคุณสามารถให้ความเข้าใจได้ง่ายหรือลิงก์ที่ดีที่ฉันสามารถอ่านเกี่ยวกับเรื่องนี้ ขอบคุณ!
155 sql  oracle  join  outer-join 


5
อะไรคือความแตกต่างระหว่าง sql และ mysql [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันใหม่สำหรับฐานข้อมูลและฉันสงสัยว่า: อะไรคือความแตกต่างระหว่างSQLและMySQL ?
154 mysql  sql  database 

8
เป็นไปได้ไหมที่จะใช้คำสั่ง SELECT INTO กับ UNION [ALL]?
ใน SQL Server สิ่งนี้จะแทรก 100 เรคคอร์ดจากตารางลูกค้าลงใน tmpFerdeen: - SELECT top(100)* INTO tmpFerdeen FROM Customers เป็นไปได้หรือไม่ที่จะทำ SELECT INTO ข้าม UNION ALL SELECT: - SELECT top(100)* FROM Customers UNION All SELECT top(100)* FROM CustomerEurope UNION All SELECT top(100)* FROM CustomerAsia UNION All SELECT top(100)* FROM CustomerAmericas ไม่แน่ใจว่าจะเพิ่มส่วนคำสั่ง INTO ได้ที่ไหนด้วย
154 sql  sql-server 

8
บิตที่มีค่าคงที่ 1 หรือ 0 ใน SQL Server
เป็นไปได้ไหมที่จะแสดง 1 หรือ 0 เป็นบิตเมื่อใช้เป็นค่าฟิลด์ในคำสั่ง select? เช่น ในคำสั่งกรณีนี้ (ซึ่งเป็นส่วนหนึ่งของคำสั่งที่เลือก) ICourseBased เป็นประเภท int case when FC.CourseId is not null then 1 else 0 end as IsCoursedBased เพื่อให้เป็นประเภทบิตฉันต้องโยนค่าทั้งสอง case when FC.CourseId is not null then cast(1 as bit) else cast(0 as bit) end as IsCoursedBased มีวิธีสั้น ๆ ในการแสดงค่าเป็น bit type โดยไม่ต้องร่ายทุกครั้งหรือไม่? (ฉันใช้ …
154 sql  sql-server  tsql  bit 

9
คัดลอกข้อมูลลงในตารางอื่น
วิธีการคัดลอก / ผนวกข้อมูลจากตารางหนึ่งไปยังอีกตารางที่มีสคีมาเดียวกันใน SQL Server ได้อย่างไร แก้ไข: สมมติว่ามีแบบสอบถาม select * into table1 from table2 where 1=1 ซึ่งสร้างด้วยสคีเดียวกันเช่นเดียวกับข้อมูลในขณะที่table1table2 มีแบบสอบถามสั้น ๆ เช่นนี้เพื่อคัดลอกข้อมูลทั้งหมดเท่านั้นลงในตารางที่มีอยู่แล้ว?

13
ข้อดีและข้อเสียของการคำนวณใน SQL และแอปพลิเคชันของคุณคืออะไร
shopkeeper ตารางมีฟิลด์ต่อไปนี้: id (bigint),amount (numeric(19,2)),createddate (timestamp) สมมุติว่าฉันมีตารางด้านบน ฉันต้องการรับบันทึกเมื่อวานและสร้างรายงานโดยพิมพ์จำนวนเงินเป็นเซนต์ วิธีหนึ่งในการทำคือการคำนวณในแอปพลิเคชัน java ของฉันและดำเนินการแบบสอบถามง่าย ๆ Date previousDate ;// $1 calculate in application Date todayDate;// $2 calculate in application select amount where createddate between $1 and $2 จากนั้นวนรอบบันทึกและแปลงจำนวนเงินเป็นเซ็นต์ในแอปพลิเคชัน java ของฉันและสร้างรายงาน อีกวิธีหนึ่งก็เหมือนกับการคำนวณในแบบสอบถามของ sql: select cast(amount * 100 as int) as "Cents" from shopkeeper where createddate …

13
การจัดเรียงตามลำดับของค่าในส่วนคำสั่ง SQL IN ()
ฉันสงสัยว่ามีคำสั่งซื้อที่ไม่อยู่ (อาจเป็นวิธีที่ดีกว่า) ตามลำดับของค่าในประโยค IN () ปัญหาคือฉันมี 2 แบบสอบถามหนึ่งที่ได้รับ ID ทั้งหมดและที่สองที่ดึงข้อมูลทั้งหมด อันแรกสร้างลำดับของ ID ที่ฉันต้องการลำดับที่สองโดย ID จะอยู่ในข้อ IN () ตามลำดับที่ถูกต้อง ดังนั้นมันจึงเป็นสิ่งที่ต้องการ (เรียบง่ายมาก): SELECT id FROM table1 WHERE ... ORDER BY display_order, name SELECT name, description, ... WHERE id IN ([id's from first]) ปัญหาคือแบบสอบถามที่สองไม่ส่งคืนผลลัพธ์ในลำดับเดียวกันกับที่ ID ถูกใส่ลงในส่วนคำสั่ง IN () ทางออกหนึ่งที่ฉันได้พบคือการใส่ ID ทั้งหมดลงในตาราง temp ที่มีฟิลด์การเพิ่มอัตโนมัติซึ่งจะเข้าร่วมในแบบสอบถามที่สอง …
154 mysql  sql  sql-order-by 

8
วัตถุประสงค์ของการสั่งซื้อโดย 1 ในคำสั่ง SQL เลือกคืออะไร?
ฉันอ่านรหัสเก่า ๆ ในที่ทำงานและสังเกตว่ามีหลายมุมมองพร้อมorder by 1ประโยค สิ่งนี้ทำให้สำเร็จ ตัวอย่าง: Create view v_payment_summary AS SELECT A.PAYMENT_DATE, (SELECT SUM(paymentamount) FROM payment B WHERE PAYMENT_DATE = B.PAYMENT_DATE and SOME CONDITION) AS SUM_X, (SELECT SUM(paymentamount) FROM payment B WHERE PAYMENT_DATE = B.PAYMENT_DATE and SOME OTHER CONDITION) AS SUM_Y FROM payment A ORDER BY 1;
154 sql  sql-order-by 

7
วิธีการเลือกทุกแถวที่ค่าคอลัมน์ไม่แตกต่างกัน
ฉันต้องเรียกใช้คำสั่ง select ที่ส่งคืนแถวทั้งหมดที่ค่าของคอลัมน์ไม่ชัดเจน (เช่น EmailAddress) ตัวอย่างเช่นหากตารางมีลักษณะดังนี้: CustomerName EmailAddress Aaron aaron@gmail.com Christy aaron@gmail.com Jason jason@gmail.com Eric eric@gmail.com John aaron@gmail.com ฉันต้องการแบบสอบถามเพื่อส่งคืน: Aaron aaron@gmail.com Christy aaron@gmail.com John aaron@gmail.com ฉันได้อ่านบทความจำนวนมากและลองใช้ข้อความค้นหาต่าง ๆ เพื่อประโยชน์ แบบสอบถามที่ฉันเชื่อว่าควรใช้งานได้ด้านล่าง มีคนแนะนำทางเลือกอื่นหรือบอกฉันว่าอาจมีอะไรผิดปกติในการสืบค้นของฉัน select EmailAddress, CustomerName from Customers group by EmailAddress, CustomerName having COUNT(distinct(EmailAddress)) > 1

4
สิ่งที่ทำให้เกิดข้อผิดพลาด: ไม่มีการจับคู่ข้อ จำกัด ที่ไม่ซ้ำกันสำหรับคีย์อ้างอิงตาราง
ตัวอย่างโครงสร้างตารางด้านล่างให้ข้อผิดพลาด: ไม่มีการจับคู่ข้อ จำกัด ที่ไม่ซ้ำกันสำหรับคีย์อ้างอิงตารางและมีจ้องมองมันในขณะที่ตอนนี้ฉันไม่สามารถคิดออกว่าทำไมข้อผิดพลาดนี้เกิดขึ้นในสถานการณ์นี้ BEGIN; CREATE TABLE foo ( name VARCHAR(256) PRIMARY KEY ); CREATE TABLE bar( pkey SERIAL PRIMARY KEY, foo_fk VARCHAR(256) NOT NULL REFERENCES foo(name), name VARCHAR(256) NOT NULL, UNIQUE (foo_fk,name) ); CREATE TABLE baz( pkey SERIAL PRIMARY KEY, bar_fk VARCHAR(256) NOT NULL REFERENCES bar(name), name VARCHAR(256) ); …
154 sql  postgresql 

17
ข้อผิดพลาดของระบบปฏิบัติการเซิร์ฟเวอร์ SQL ที่ 5:“ 5 (ปฏิเสธการเข้าถึง)”
ฉันเริ่มเรียนรู้ SQL และฉันมีหนังสือที่ให้ฐานข้อมูลทำงานได้ ไฟล์ด้านล่างนี้อยู่ในไดเรกทอรี แต่ปัญหาคือเมื่อฉันเรียกใช้แบบสอบถามมันทำให้ฉันมีข้อผิดพลาดนี้: เกี่ยวกับข่าวสาร 5120 ระดับ 16 สถานะ 101 บรรทัด 1 ไม่สามารถเปิดแฟ้มทางกายภาพ "C: \ Murach \ SQL Server 2008 \ Databases \ AP.mdf" ข้อผิดพลาดของระบบปฏิบัติการ 5: "5 (การเข้าถึงถูกปฏิเสธ)" CREATE DATABASE AP ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf') LOG ON (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP_log.ldf') FOR ATTACH GO ในหนังสือผู้แต่งบอกว่ามันควรจะใช้ได้ …
153 sql  sql-server 

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