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

คำสั่ง SQL หลัก SELECT จะดึงข้อมูลจากหนึ่งหรือมากกว่าหนึ่งตารางหรือแหล่งข้อมูลอื่น ๆ ของชุดข้อมูลแถวเช่นมุมมองหรือฟังก์ชั่นที่ให้คุณค่ากับตาราง

1
MySQL นับแถวจากตารางอื่นสำหรับแต่ละระเบียนในตาราง
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID ฉันกำลังพยายามนับแถวสุดท้าย แต่แทนที่จะนับผลลัพธ์ทั้งหมดและส่งกลับผลลัพธ์เดียว ฉันได้รับสิ่งที่ต้องการ เนื่องจากมีหลายระเบียนเนื่องจากมีสองรายการใน ID ผู้เข้าร่วมสำหรับ K1052280 ฉันต้องการนับและส่งคืนหมายเลข สิ่งที่ต้องการ
20 mysql  select  count 

2
การเลือกหลายคอลัมน์ผ่านแบบสอบถามย่อย
ฉันพยายามเลือกคอลัมน์ 2 จากแบบสอบถามย่อยในแบบสอบถามต่อไปนี้ แต่ไม่สามารถทำได้ พยายามสร้างตารางนามแฝง แต่ยังไม่สามารถหาได้ SELECT DISTINCT petid, userid, (SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate, (SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID FROM pet LEFT JOIN comments ON pet.id = comments.petid WHERE userid='ABC' AND deviceID!='ABC' AND comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH); …

4
ฉันจะได้รับมูลค่าปัจจุบันและมูลค่าที่มากกว่าในการเลือกได้อย่างไร?
ฉันมีตาราง InnoDB 'idtimes' (MySQL 5.0.22-log) พร้อมคอลัมน์ `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] ด้วยคีย์เฉพาะแบบผสม UNIQUE KEY `id_time` (`id`,`time`) ดังนั้นจึงอาจมีการประทับเวลาหลายรายการต่อ ID และหลาย ID ต่อการประทับเวลา ฉันพยายามตั้งค่าแบบสอบถามที่ฉันได้รับรายการทั้งหมดรวมถึงเวลาที่มากขึ้นสำหรับแต่ละรายการถ้ามีอยู่ดังนั้นควรส่งคืนเช่น: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | …
18 mysql  innodb  select 

1
ละเว้นการเน้นเสียงใน 'ที่ไหน'
ในฐานข้อมูลของเราเรามีหลายรายการที่มี caron / hatschek ตอนนี้ผู้ใช้ของเราต้องการค้นหารายการรวมถึง caron / hatschek เมื่อค้นหารายการที่ไม่มี ฉันจะแสดงสิ่งนี้ด้วยตัวอย่างง่ายๆ: ในฐานข้อมูลของเราเรามีรายการ (ติดต่อกับชื่อ) Millière ดังนั้นชื่อนี้ถูกต้องในประเทศที่บุคคลนั้นอาศัยอยู่ ในประเทศของเราเราไม่ได้มีตัวอักษรใด ๆ กับรอน / hatschek Milliereดังนั้นผู้ใช้ค้นหาของเราสำหรับ ไม่มีผลการค้นหาขึ้นมาเป็นไม่ชัดไม่ตรงกับèe ผมไม่มีความคิดวิธีนี้อาจจะตระหนักว่าé, è, êและอื่น ๆ อีกมากมายที่มีอยู่ (และนี่เป็นเพียงตัวอย่างจดหมายe... ) (วิธีอื่นจะง่ายกว่ามากเพราะฉันสามารถแทนที่ตัวอักษรทั้งหมดด้วย caron / hatschek ด้วยตัวอักษรพื้นฐานได้อย่างชัดเจนเห็นได้ชัดว่าผู้ใช้ของเราต้องการชื่อรุ่นที่ถูกต้องในฐานข้อมูลไม่ใช่คนพิการ)

1
SELECT TOP 1 จากตารางที่มีขนาดใหญ่มากในคอลัมน์ดัชนีนั้นช้ามาก แต่ไม่ใช่ด้วยลำดับย้อนกลับ (“ desc”)
เรามีฐานข้อมูลขนาดใหญ่ประมาณ 1TB ใช้ SQL Server 2014 บนเซิร์ฟเวอร์ที่ทรงพลัง ทุกอย่างทำงานได้ดีไม่กี่ปี ประมาณ 2 สัปดาห์ที่ผ่านมาเราทำการบำรุงรักษาอย่างสมบูรณ์ซึ่งรวมถึง: ติดตั้งอัปเดตซอฟต์แวร์ทั้งหมด สร้างดัชนีและไฟล์ฐานข้อมูลขนาดกะทัดรัดทั้งหมด อย่างไรก็ตามเราไม่ได้คาดหวังว่าในบางช่วงการใช้งาน CPU ของ DB จะเพิ่มขึ้นมากกว่า 100% เป็น 150% เมื่อการโหลดจริงเหมือนกัน หลังจากการแก้ไขปัญหาจำนวนมากเราได้ จำกัด ให้แคบลงเป็นคำถามที่ง่ายมาก แต่เราไม่พบวิธีแก้ปัญหา การสืบค้นนั้นง่ายมาก: select top 1 EventID from EventLog with (nolock) order by EventID ใช้เวลาประมาณ 1.5 วินาทีเสมอ! อย่างไรก็ตามเคียวรีที่คล้ายกันที่มี "desc" จะใช้เวลาประมาณ 0 ms: select top 1 EventID …

2
การทำงานหลายอย่างโดยใช้ WITH
มีวิธีการดำเนินการหลายการใช้WITHคำสั่งหรือไม่ สิ่งที่ต้องการ WITH T AS ( SELECT * FROM Tbl ) BEGIN OPEN P_OUTCURSOR FOR SELECT * FROM T; SELECT COUNT(*) INTO P_OUTCOUNT FROM T; END; ฉันต้องการเลือกข้อมูลและจำนวนของมัน ...
16 oracle  select  cte 

4
รวมตัวเองแบบเรียกซ้ำ
ฉันมีcommentsตารางซึ่งสามารถทำให้ง่ายลงไปนี้: comments ======= id user_id text parent_id โดยที่parent_idnullable แต่อาจเป็นกุญแจสำคัญสำหรับความคิดเห็นหลัก ตอนนี้ฉันจะselectทายาทของความคิดเห็นเฉพาะได้อย่างไร ความคิดเห็นอาจลดลงหลายระดับ ...

3
ทำไมฉันต้องเลือกจากตารางคู่
ผลงานในฐานข้อมูลความสัมพันธ์ที่สำคัญระบบการจัดการนี้ส่วนใหญ่มีแนวโน้มที่จะปรากฏใน StackOverflow / dba.stackexchange เป็นSQL Server, MySQL, PostgreSQL และ SQLite (WebSQL) select 'abc' abc, 1 def; มันไม่ทำงานบน Oracle ทำไมเราต้องเลือกจาก DUAL ใน Oracle มาตรฐาน ISO / ANSI สำหรับ SQL ต้องการข้อ FROM สำหรับคำสั่งSELECTหรือไม่? แก้ไข: ตามBacon Bitคำตอบของมันดูเหมือนจะต้องการโดยมาตรฐาน SQL ดังนั้นในความเป็นจริงเพราะชื่อ DUAL นั้นเป็นชื่อเรียกที่ผิดถ้าฉันจะสร้างตารางและตั้งชื่อ ATOM หรือ ONE เช่นcreate table one (atom int);.. select 'abc' abc, 1 …
15 oracle  select 

2
คำว่า "การฉายภาพ" หมายถึงอะไรในแบบสอบถาม SQL (หรือดูคำจำกัดความ)
ในเอกสารของ Oracle The Query Optimizerภายใต้View Mergingฉันพบข้อมูลต่อไปนี้ การเพิ่มประสิทธิภาพการรวมมุมมองนำไปใช้กับมุมมองที่มีเฉพาะการเลือกการคาดการณ์และการรวม นั่นคือมุมมองที่ผสานได้ไม่มีตัวดำเนินการตั้งค่าฟังก์ชันการรวม DISTINCT GROUP BY เชื่อมต่อ BY และอื่น ๆ (เน้นที่เหมือง) แต่ฉันสามารถคาดเดาได้ว่าการฉายภาพตามความเป็นจริงหมายถึงอะไร
15 oracle  select 

4
การรับ SELECT เพื่อส่งคืนค่าคงที่แม้ว่าแถวศูนย์ตรงกัน
พิจารณาข้อความสั่งที่เลือกนี้: SELECT *, 1 AS query_id FROM players WHERE username='foobar'; มันจะส่งคืนคอลัมน์ที่query_idมีค่า1พร้อมกับคอลัมน์อื่น ๆ ของผู้เล่น วิธีการหนึ่งที่จะทำให้ผลตอบแทน SQL ข้างต้นอย่างน้อยquery_idของ1แม้ว่าเลือกพบว่าไม่มีแถวจับคู่? BTW คือ PostgreSQL 8.4

2
การนับแถวจากแบบสอบถามย่อย
ง่าย: ฉันต้องการนับจำนวนแถวจากแบบสอบถามย่อย โปรดทราบว่าสถานะนั้นไม่ว่าโฮสต์จะออนไลน์หรือไม่ รหัสไม่ถูกต้อง SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) อธิบาย แบบสอบถามแรกเมื่อรันด้วยตนเองจะส่งคืนสิ่งนี้: SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 เคียวรีที่สองรันด้วยตนเองส่งคืนสิ่งนี้: SELECT COUNT(ip_address) FROM `ports` 17 คำถาม ฉันต้องการทราบวิธีนับรายการที่อยู่ IP 5 รายการนั้น ฉันกำลังค้นหาวิธีแก้ไขปัญหาแบบออนไลน์ที่เป็นไปได้ทางออนไลน์และเพิ่งเริ่มรู้สึกหงุดหงิดดังนั้นฉันจึงถามผู้เชี่ยวชาญ

1
สร้างคีย์หลักอัตโนมัติใน CREATE TABLE … AS SELECT
CREATE TABLE ... AS SELECT...ฉันสร้างตารางโดยใช้ความซับซ้อนแบบสอบถามเลือกผ่าน ฉันจะเพิ่มคีย์หลักการสร้างอัตโนมัติในแบบสอบถามนี้ได้อย่างไร ตัวอย่างเช่น: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` แบบสอบถามนี้จะสร้างตารางที่มีfirstname, lastname, lang, username, group_nameคอลัมน์ ฉันต้องการให้มีidคอลัมน์ที่เป็นคีย์หลักของการสร้างอัตโนมัติ มีวิธีใดในการทำเช่นนี้โดยเปลี่ยนคิวรีนี้ ฉันรู้ว่าฉันสามารถทำได้โดยการเปลี่ยนตารางหลังจากดำเนินการแบบสอบถามนี้ แต่ถ้ามีวิธีใดที่จะทำสิ่งนี้โดยตรงในcreate tableคำสั่งฉันต้องการทราบวิธีการทำเช่นนั้น

2
เลือกเฉพาะระเบียนที่มีค่าแตกต่างกัน / หลายค่าสำหรับคอลัมน์ใดคอลัมน์หนึ่ง
ด้านล่างเป็นตัวอย่างของตารางสมาชิกของฉัน มีบางระเบียนที่มีค่าหลายค่าในฟิลด์อีเมล ฉันต้องการเลือกระเบียนที่มีค่าอีเมลหลายค่าเท่านั้น: ตารางสมาชิก ID LASTNAME FIRSTNAME EMAIL 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 678 Black Ted tedblack@gmail.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole colerobersc@hotmail.com ฉันต้องการผลลัพธ์ที่ได้คือ: 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 …
11 select  count  distinct 

2
คอลัมน์ที่ไม่เกี่ยวข้องมีผลต่อเวลาสอบถามของข้อความสั่งที่เลือกหรือไม่
ฉันแค่อยากรู้ สมมติว่าคุณมีตาราง 1 ล้านระเบียน / แถว select order_value from store.orders มันสร้างความแตกต่างหรือไม่ว่าตารางนั้นมี 1 เขตข้อมูล 2 เขตข้อมูลหรือ 100 เขตข้อมูลในเวลาสอบถามจริงหรือไม่ ฉันหมายถึงฟิลด์ทั้งหมดที่ไม่ใช่ "order_value" ตอนนี้ฉันกำลังผลักข้อมูลไปยังคลังข้อมูล บางครั้งฉันทิ้งเขตข้อมูลลงในตารางที่ "อาจใช้ในอนาคตสักวันหนึ่ง" - แต่พวกเขาไม่ได้ถูกสอบถามตอนนี้โดยอะไร ฟิลด์ 'ภายนอก' เหล่านี้จะมีผลต่อคำสั่งที่เลือกซึ่งไม่รวมไว้ทั้งโดยตรงหรือโดยอ้อม (ไม่ใช่ * ฉันหมายถึง)

4
แสดงชื่อตาราง + จำนวนเรคคอร์ดสำหรับแต่ละตารางในฐานข้อมูล mysql innodb
วิธีแสดงรายการตารางทั้งหมดในฐานข้อมูลปัจจุบันพร้อมกับจำนวนแถวของตาราง กล่าวอีกนัยหนึ่งคุณสามารถคิดถึงคำถามที่จะเกิดขึ้นกับสิ่งนี้ใน mysql หรือไม่? +------------------------++------------------------+ | Tables_in_database | Number of rows | +------------------------++------------------------+ | database 1 | 1000 | | database 2 | 1500 | +------------------------++------------------------+ วิธีการที่แตกต่างยินดีต้อนรับ
10 mysql  innodb  select  count 

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