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

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

10
การจัดเก็บ JSON ในฐานข้อมูลเทียบกับการมีคอลัมน์ใหม่สำหรับแต่ละคีย์
ฉันกำลังใช้โมเดลต่อไปนี้สำหรับเก็บข้อมูลที่เกี่ยวข้องกับผู้ใช้ในตารางของฉัน - ฉันมี 2 คอลัมน์ - uid(คีย์หลัก) และmetaคอลัมน์ที่เก็บข้อมูลอื่นเกี่ยวกับผู้ใช้ในรูปแบบ JSON uid | meta -------------------------------------------------- 1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']} -------------------------------------------------- 2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']} -------------------------------------------------- นี่คือวิธีที่ดีกว่า (ประสิทธิภาพฉลาดการออกแบบที่ชาญฉลาด) กว่ารุ่นหนึ่งคอลัมน์ต่อทรัพย์สินที่ตารางจะมีคอลัมน์มากมายเช่นuid, ,nameemailid สิ่งที่ฉันชอบเกี่ยวกับโมเดลแรกคือคุณสามารถเพิ่มฟิลด์ได้มากเท่าที่จะทำได้โดยไม่มีข้อ จำกัด นอกจากนี้ฉันยังสงสัยว่าตอนนี้ฉันได้ใช้โมเดลแรกแล้ว ฉันจะทำเคียวรีอย่างไรเช่นฉันต้องการดึงข้อมูลผู้ใช้ทั้งหมดที่มีชื่อเช่น 'foo' คำถาม - วิธีใดที่จะดีกว่าในการจัดเก็บข้อมูลที่เกี่ยวข้องกับผู้ใช้ (จำไว้ว่าจำนวนของฟิลด์ไม่คงที่) ในฐานข้อมูลโดยใช้ - JSON หรือคอลัมน์ต่อฟิลด์ นอกจากนี้หากมีการนำโมเดลแรกไปใช้จะทำการสืบค้นฐานข้อมูลตามที่อธิบายไว้ข้างต้นได้อย่างไร ฉันควรใช้ทั้งสองโมเดลโดยการเก็บข้อมูลทั้งหมดซึ่งอาจถูกค้นหาโดยเคียวรีในแถวแยกต่างหากและข้อมูลอื่นใน JSON (เป็นแถวที่แตกต่างกัน) ปรับปรุง เนื่องจากไม่มีคอลัมน์มากเกินไปที่ฉันต้องทำการค้นหาจึงควรใช้ทั้งสองแบบหรือไม่ คีย์ต่อคอลัมน์สำหรับข้อมูลที่ฉันต้องการค้นหาและ JSON …

19
การนับ DISTINCT บนหลายคอลัมน์
มีวิธีที่ดีกว่าในการทำแบบสอบถามเช่นนี้: SELECT COUNT(*) FROM (SELECT DISTINCT DocumentId, DocumentSessionId FROM DocumentOutputItems) AS internalQuery ฉันต้องนับจำนวนรายการที่แตกต่างจากตารางนี้ แต่ความแตกต่างอยู่เหนือสองคอลัมน์ แบบสอบถามของฉันทำงานได้ดี แต่ฉันสงสัยว่าฉันจะได้ผลลัพธ์สุดท้ายโดยใช้เพียงแบบสอบถามเดียว (โดยไม่ใช้แบบสอบถามย่อย)

4
MySQL ได้แล้ว () +1 วัน
ฉันใช้now()ในแบบสอบถาม MySQL INSERT INTO table SET data = '$data', date = now() แต่ฉันต้องการเพิ่ม 1 วันในวันที่นี้ (ดังนั้นdateควรมีวันพรุ่งนี้) เป็นไปได้ไหม?
212 sql  mysql  datetime 


30
แปลงหมายเลขเดือนเป็นฟังก์ชันชื่อเดือนใน SQL
ฉันเก็บเดือนไว้ใน SQL Server เป็น 1,2,3,4, ... 12 ฉันต้องการแสดงเป็นมกราคมกุมภาพันธ์เป็นต้นมีฟังก์ชันใน SQL Server เช่น MonthName (1) = January หรือไม่ ฉันพยายามหลีกเลี่ยงคำสั่ง CASE ถ้าเป็นไปได้

8
ค้นหาแถวที่มีค่าเท่ากันในคอลัมน์ใน MySQL
ในตาราง [สมาชิก] บางแถวมีค่าเดียวกันสำหรับemailคอลัมน์ login_id | email ---------|--------------------- john | john123@hotmail.com peter | peter456@gmail.com johnny | john123@hotmail.com ... บางคนใช้ login_id ที่แตกต่างกัน แต่ที่อยู่อีเมลเดียวกันไม่มีข้อ จำกัด ที่ไม่ซ้ำกันในคอลัมน์นี้ ตอนนี้ฉันต้องการค้นหาแถวเหล่านี้และดูว่าควรลบออกไหม คำสั่ง SQL ใดที่ฉันควรใช้เพื่อค้นหาแถวเหล่านี้ (MySQL 5)
209 sql  mysql  database 

8
ความแตกต่างของ Oracle ระหว่าง NVL และ Coalesce
มีความแตกต่างที่ชัดเจนระหว่าง NVL และ Coalesce ใน Oracle หรือไม่ ความแตกต่างที่ชัดเจนคือการรวมกันจะส่งคืนรายการที่ไม่ใช่โมฆะแรกในรายการพารามิเตอร์ในขณะที่ nvl รับเพียงสองพารามิเตอร์และคืนแรกถ้ามันไม่เป็นโมฆะมิฉะนั้นจะส่งคืนที่สอง ดูเหมือนว่า NVL อาจเป็นเวอร์ชั่นรวมของ 'Base Case " ฉันพลาดอะไรไปรึเปล่า?
208 sql  oracle  coalesce  nvl 

5
ปิดข้อ จำกัด ชั่วคราว (MS SQL)
ฉันกำลังมองหาวิธีที่จะปิดข้อ จำกัด ทั้งหมดของฐานข้อมูลชั่วคราว (เช่นความสัมพันธ์ของตาราง) ฉันต้องการคัดลอก (ใช้ INSERTs) หนึ่งตารางของฐานข้อมูลไปยังฐานข้อมูลอื่น ฉันรู้ว่าฉันสามารถบรรลุเป้าหมายนั้นได้โดยดำเนินการคำสั่งตามลำดับที่เหมาะสม (เพื่อไม่ทำลายความสัมพันธ์) แต่มันจะง่ายขึ้นถ้าฉันสามารถปิดการตรวจสอบข้อ จำกัด ชั่วคราวและเปิดใหม่หลังจากการดำเนินการเสร็จสิ้น เป็นไปได้ไหม

27
แปลงคอลัมน์วันที่และเวลาจาก UTC เป็นเวลาท้องถิ่นในใบแจ้งยอดที่เลือก
ฉันกำลังใช้แบบสอบถามแบบใช้เลือกข้อมูล SQL สองสามรายการและต้องการแปลงคอลัมน์วันที่และเวลา UTC ของฉันเป็นเวลาท้องถิ่นเพื่อแสดงเป็นเวลาท้องถิ่นในผลการสืบค้นของฉัน หมายเหตุฉันไม่ต้องการทำการแปลงผ่านรหัส แต่เมื่อฉันทำแบบสอบถาม SQL ด้วยตนเองและสุ่มกับฐานข้อมูลของฉัน
208 sql  sql-server 

30
ใครสามารถจดลิขสิทธิ์แบบสอบถาม SQL [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันทำงานให้กับโรงเรียน ทุกปีเราต้องส่งออกรายชื่อนักเรียนจากระบบการจัดการนักเรียนของเราและส่งไปยัง บริษัท ที่จัดการสอบออนไลน์ของเรา ดังนั้นการส่งออกนี้เราต้องจ้างคนที่รู้ผลงานภายในของระบบการจัดการนักเรียนของเรา เขาเขียนแบบสอบถาม SQL (Adaptive Sybase SQL Anywhere) เพื่อส่งออกนักเรียนไปยังไฟล์ csv อย่างที่เราต้องการ นี่คือก่อนที่ฉันจะเริ่มทำงานให้กับเขตดังนั้นในขณะที่ฉันคิดว่านี่เป็นแอปพลิเคชันจริงจนกระทั่งถึงเวลาที่ฉันจะส่งออกด้วยตัวเอง และทุกปีเขาเรียกเก็บเงินเรา $ 500 เพื่ออัปเดตคิวรีนี้เพื่อส่งออกนักเรียนสำหรับปีปัจจุบัน ดังนั้นเมื่อฉันค้นพบว่ามันเป็นเพียงแบบสอบถาม (ไฟล์. bat และ. sql) ความคิดของฉันคือ "ฉันสามารถอัปเดตตัวเองได้" สิ่งที่ฉันต้องทำคือเปลี่ยนปีในการสืบค้น (เช่น 2009 ถึง 2010) แบบสอบถาม (ไฟล์. sql) มีความคิดเห็นนี้อยู่ด้านบน: // This code …
207 sql 

8
ค้นหาสตริงโดยค้นหาตารางทั้งหมดใน SQL Server Management Studio 2008
มีวิธีการค้นหาสตริงในตารางฐานข้อมูลทั้งหมดใน SQL Server Management Studio 2008 หรือไม่ johnฉันต้องการที่จะค้นหาสตริงพูด johnผลที่ควรจะแสดงตารางและแถวของตนที่มี
207 sql  sql-server  search 

9
SQL: วิธีการตรวจสอบอย่างถูกต้องว่ามีการบันทึกอยู่
ขณะอ่านเอกสารเกี่ยวกับการปรับแต่ง SQL ฉันพบสิ่งนี้: SELECT COUNT(*) : นับจำนวนแถว มักใช้อย่างไม่เหมาะสมเพื่อตรวจสอบการมีอยู่ของระเบียน คือSELECT COUNT(*)จริงๆที่ไม่ดีที่? วิธีที่เหมาะสมในการตรวจสอบการมีอยู่ของบันทึกคืออะไร?

14
เลือก 10 อันดับแรกสำหรับแต่ละประเภท
ฉันต้องการส่งกลับ 10 อันดับแรกจากแต่ละส่วนในแบบสอบถามเดียว ใครช่วยได้ด้วยวิธีทำ ส่วนคือหนึ่งในคอลัมน์ในตาราง ฐานข้อมูลคือ SQL Server 2005 ฉันต้องการคืน 10 อันดับแรกตามวันที่ที่ป้อน ส่วนคือธุรกิจท้องถิ่นและคุณลักษณะ สำหรับหนึ่งวันที่เฉพาะฉันต้องการเฉพาะแถวบนสุด (10) แถวธุรกิจ (รายการล่าสุด) แถวบนสุด (10) แถวท้องถิ่นและคุณลักษณะด้านบน (10)

8
แก้ไขตาราง: วิธีการเปลี่ยนแอตทริบิวต์ 'อนุญาต Nulls' จากไม่ใช่ null เพื่ออนุญาต null
วิธีการเปลี่ยนหนึ่งคุณลักษณะในตารางโดยใช้ T-SQL เพื่ออนุญาตให้มีค่า Null (ไม่ใช่ Null -> Null) ตารางการเปลี่ยนแปลงอาจจะ?

4
จะย้ายคอลัมน์ในตาราง MySQL ได้อย่างไร
ขณะนี้ฉันมีตาราง MySQL ต่อไปนี้: Employees (empID, empName, department); ฉันต้องการเปลี่ยนตารางเป็นดังต่อไปนี้: Employees (empID, department, empName); สิ่งนี้สามารถทำได้โดยใช้ALTERคำสั่ง? หมายเหตุ: ฉันต้องการเปลี่ยนเฉพาะตำแหน่งคอลัมน์
207 mysql  sql  alter 

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