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

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

4
ลำดับเริ่มต้นของการบันทึกสำหรับคำสั่ง SELECT ใน MySQL คืออะไร?
สมมติว่าคุณมีตารางและข้อมูลต่อไปนี้: create table t ( k int, v int, index k(k) ) engine=memory; insert into t (k, v) values (10, 1), (10, 2), (10, 3); เมื่อออกselect * from t where k = 10โดยไม่มีorder byส่วนคำสั่ง MySQL จะเรียงลำดับระเบียนตามค่าเริ่มต้นอย่างไร

8
ตัวเลือก * ยังคงไม่มีอะไรใหญ่โตใน SQL Server 2012 หรือไม่
ย้อนกลับไปในสมัยของปีกลายถือเป็นเรื่องใหญ่ที่ไม่ต้องทำselect * from tableหรือselect count(*) from tableเพราะการแสดงที่โด่งดัง ยังคงเป็นกรณีนี้ใน SQL Server รุ่นที่ใหม่กว่า (ฉันใช้ 2012 แต่ฉันเดาว่าคำถามจะใช้กับ 2008 - 2014) แก้ไข:เนื่องจากผู้คนดูเหมือนจะประณามฉันเล็กน้อยที่นี่ฉันจึงมองสิ่งนี้จากมุมมองของมาตรฐาน / ทางวิชาการไม่ว่าจะเป็นสิ่งที่ "ถูกต้อง" (ซึ่งแน่นอนว่ามันไม่ใช่)

3
เหตุใดแบบสอบถามนี้จึงใช้งานได้
ฉันมีสองตาราง table_a (id, ชื่อ) และ table_b (id) สมมุติว่าบน Oracle 12c เหตุใดแบบสอบถามนี้จึงไม่ส่งคืนข้อยกเว้น select * from table_a where name in (select name from table_b); จากสิ่งที่ฉันเข้าใจ Oracle เห็นว่าเป็น select * from table_a where name = name; แต่สิ่งที่ฉันไม่ได้คือทำไม

7
เป็นไปได้หรือไม่ที่จะ mysqldump ชุดย่อยของฐานข้อมูลที่จำเป็นในการสร้างแบบสอบถาม?
พื้นหลัง ฉันต้องการให้ส่วนย่อยของฐานข้อมูลของฉันที่จำเป็นในการสร้างselectแบบสอบถาม เป้าหมายของฉันคือการทำให้เวิร์กโฟลว์การคำนวณของฉันทำซ้ำได้ (เช่นในการวิจัยที่ทำซ้ำได้ ) คำถาม มีวิธีที่ฉันสามารถรวมคำสั่ง select นี้ลงในสคริปต์ที่ทิ้งข้อมูลการสืบค้นลงในฐานข้อมูลใหม่หรือไม่เช่นนั้นฐานข้อมูลสามารถติดตั้งบนเซิร์ฟเวอร์ mysql ใหม่ได้และคำสั่งจะทำงานกับฐานข้อมูลใหม่ ฐานข้อมูลใหม่ไม่ควรมีเร็กคอร์ดนอกเหนือจากที่ใช้ในเคียวรี อัปเดต: เพื่อความกระจ่างฉันไม่สนใจ csv dump ของผลลัพธ์การสืบค้น สิ่งที่ฉันต้องทำคือการถ่ายโอนข้อมูลชุดย่อยฐานข้อมูลเพื่อให้สามารถติดตั้งบนเครื่องอื่นและจากนั้นแบบสอบถามสามารถทำซ้ำได้ (และแก้ไขได้ด้วยชุดข้อมูลเดียวกัน) ตัวอย่าง ตัวอย่างเช่นการวิเคราะห์ของฉันอาจเคียวรีชุดย่อยของข้อมูลที่ต้องการบันทึกจากหลาย ๆ ตาราง (ในตัวอย่างนี้ 3) ตาราง: select table1.id, table1.level, table2.name, table2.level from table1 join table2 on table1.id = table2.table1_id join table3 on table3.id = table2.table3_id where table3.name in ('fee', 'fi', …

5
วิธีเลือกจากผลลัพธ์สถานะแสดงตาราง
ฉันต้องการ จำกัด แถวและคอลัมน์ที่กลับมาจาก SHOW TABLE STATUS คำสั่งใน MySQL 5.1 มีวิธีรับข้อมูลเดียวกันนี้ผ่านSELECTคำสั่งเพื่อให้ฉันสามารถจัดการผลลัพธ์ในลักษณะปกติได้หรือไม่
36 mysql  select 

1
การใช้คำสั่ง build ใน JOIN สามารถแนะนำอุปสรรคการเพิ่มประสิทธิภาพได้ในบางกรณี?
ฉันได้รับความสนใจว่าการUSINGสร้าง (แทนON) ในส่วนFROMคำSELECTสั่งอาจทำให้เกิดปัญหาและอุปสรรคในการเพิ่มประสิทธิภาพในบางกรณี ฉันหมายถึงคำสำคัญนี้: เลือก * จาก เข้าร่วมขโดยใช้ (a_id) ในกรณีที่ซับซ้อนมากขึ้น บริบท: ความคิดเห็นสำหรับคำถามนี้ ฉันใช้สิ่งนี้มากและไม่เคยสังเกตเห็นอะไรเลย ฉันสนใจกรณีทดสอบที่แสดงให้เห็นถึงผลกระทบหรือลิงก์ใด ๆไปยังข้อมูลเพิ่มเติม ความพยายามในการค้นหาของฉันว่างเปล่า คำตอบที่สมบูรณ์แบบจะเป็นกรณีทดสอบเพื่อแสดงUSING (a_id)ด้วยประสิทธิภาพที่ต่ำกว่าเมื่อเปรียบเทียบกับข้อเข้าร่วมทางเลือกON a.a_id = b.a_id- ถ้านั่นสามารถเกิดขึ้นได้จริง

5
ฉันจะใช้ค่าเริ่มต้นในแบบสอบถามแบบใช้เลือกข้อมูลใน PostgreSQL ได้อย่างไร
ฉันต้องการใช้ค่าเริ่มต้นสำหรับคอลัมน์ที่ควรใช้หากไม่มีการส่งคืนแถว เป็นไปได้ใน PostgreSQL? ฉันจะทำมันได้อย่างไร หรือมีวิธีอื่นที่ฉันสามารถแก้ไขได้? เช่นบางสิ่งเช่นนี้ SELECT MAX(post_id) AS max_id DEFAULT 0 FROM my_table WHERE org_id = 3 และถ้าไม่มีแถวที่มีในตารางผมต้องการที่จะกลับมาorg_id = 30

6
วิธีการแปลงจำนวนเต็มเป็นบูลีนในประโยค MySQL SELECT?
ฉันใหม่ที่นี่ดังนั้นโปรดฉัน ฉันมีสถานการณ์ต่อไปนี้: ฉันมีหลายตารางซึ่งเพื่อความเรียบง่ายจะถูกแสดงในมุมมองในฐานข้อมูล MySQL ของฉัน ปัญหาของฉันคือฉันต้องการค่าในมุมมองนี้แสดงว่าเป็นเหตุการณ์ประเภทหนึ่งหรืออื่น (บูลีนที่เรียบง่าย) ซึ่งฉันพยายามที่จะบรรลุด้วย: `gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent` ผลลัพธ์ถูกแสดงเป็น int และดังนั้นถูกอ่านโดย Entity Framework ปัญหาคือฉันต้องการค่าบูลีนคืนซึ่งฉันพยายามทำด้วย: CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` สิ่งนี้ส่งผลให้เกิดข้อผิดพลาดข้อหนึ่งที่ไม่ปรากฏให้ฉันเห็นใน MySQL Workbench (ฉันได้รับเฉพาะที่น่ารำคาญ "คุณมีข้อผิดพลาดใน ... ") พวกคุณช่วยฉันออกมาได้ไหม พยายามที่จะแก้ปัญหาในแอปพลิเคชันของฉัน แต่ฉันจริง ๆ preffer นี้แก้ไขได้ในฐานข้อมูลเพราะมันจะถูกใช้โดยซอฟต์แวร์อื่น ๆ ในภายหลัง

2
เหตุใด SELECT จึงเป็นขนาดเร็วกว่า SELECT foo
พิจารณาตารางค่าและแฮชเช่น: +------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | val | char(9) | NO | | NULL | | | val_hashed | char(50) | YES | | NULL | …

2
oracle - แสดงรายการผู้ใช้ที่สามารถเข้าถึงตารางบางอย่างได้
ฉันแน่ใจว่ามีการถามก่อนหน้านี้ แต่ฉันไม่พบรายละเอียดที่เกี่ยวข้องสำหรับสิ่งต่อไปนี้ มีตารางที่สร้างไว้ล่วงหน้าบางประเภทที่สามารถทำสิ่งต่อไปนี้ได้หรือไม่ (ฉันใช้ dba_tab_privs แล้ว แต่มีข้อ จำกัด และไม่ตรงกับความต้องการทั้งหมดของฉัน) ถ้าไม่มีใครมีข้อสงสัยในการตอบคำถามต่อไปนี้บ้าง รายการผู้ใช้ทั้งหมดที่ได้รับมอบหมายบทบาทเฉพาะหรือไม่ รายการบทบาททั้งหมดที่มอบให้กับผู้ใช้หรือไม่? แสดงรายการสิทธิ์ทั้งหมดที่มอบให้กับผู้ใช้หรือไม่ แสดงรายการว่าบทบาทใดในตารางที่ให้สิทธิ์การเข้าถึง SELECT แสดงรายการตารางทั้งหมดที่ผู้ใช้สามารถเลือกได้ ทำรายการผู้ใช้ทุกคนที่สามารถเลือกได้บนตารางเฉพาะ (ผ่านการได้รับบทบาทที่เกี่ยวข้องหรือผ่านการให้สิทธิ์โดยตรง ผลลัพธ์ของแบบสอบถามนี้ควรแสดงให้เห็นถึงบทบาทที่ผู้ใช้มีสิทธิ์เข้าถึงนี้หรือไม่ว่าจะเป็นการให้สิทธิ์โดยตรง

2
นามแฝงคอลัมน์อ้างอิงในรายการ SELECT เดียวกัน
ฉันกำลังแปลงระบบเก่าที่ใช้ MS-Access เป็น PostgreSQL ในการเข้าถึงเขตข้อมูลที่สร้างขึ้นใน SELECT สามารถใช้เป็นส่วนหนึ่งของสมการสำหรับเขตข้อมูลในภายหลังเช่นนี้ SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water, 100 * percent_water AS percent_water_100 FROM samples; เมื่อฉันทำเช่นนี้ใน PostgreSQL, Postgres จะพ่นข้อผิดพลาด: ข้อผิดพลาด: ไม่มีคอลัมน์ "percent_water" นี่คือวิธีที่ฉันสามารถแก้ไขได้โดยเลือกจากตัวเลือกย่อย: SELECT s1.id, s1.percent_water, 100 * s1.percent_water AS percent_water_100 FROM ( SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water …

5
ประโยชน์ของการใช้ backtick (`) ในแบบสอบถาม MySQL?
ใน MySQL เราสามารถสร้างคิวรีที่มีหรือไม่มี`สัญลักษณ์backtick ( ) ตัวอย่าง: SELECT * FROM TEST; SELECT * FROM `TEST`; ทั้งสองทำงานได้ดีใน mysql-console มีความแตกต่างทางเทคนิคหรือไม่? มีประโยชน์ในการใช้ ( `) มากกว่าการค้นหาอย่างง่ายหรือไม่
25 mysql  select 

3
วิธีการเลือกแถวเฉพาะถ้ามีคอลัมน์อยู่หรือทุกแถวถ้าไม่มีคอลัมน์
ฉันกำลังเขียนสคริปต์ที่ได้รับจำนวนแถวสำหรับตารางไม่กี่อย่างไรก็ตามสำหรับบางตารางฉันต้องการได้รับจำนวนแถวที่มีการตั้งค่าสถานะ (ในกรณีนี้ใช้งาน = 1) มีวิธีที่ฉันสามารถทำได้ในแบบสอบถามหรือไม่ เช่น: ตารางusersมีคอลัมน์ที่เรียกว่าใช้งานอยู่ ตารางclientsไม่มีคอลัมน์ที่เรียกว่าใช้งานอยู่ ฉันต้องการรับจำนวนผู้ใช้ที่มีการใช้งาน = 1 และเพิ่งได้รับจำนวนลูกค้า ก่อนที่คุณจะพูดว่า "แค่เขียนโค้ดยาก ๆ " นี่คือข้อความค้นหาที่อยู่ในสคริปต์ python ที่สามารถเรียกใช้บนฐานข้อมูลที่แตกต่างกันมากมายและฉันไม่มีทางรู้ว่าตารางสคริปต์ของฉันจะถูกเลือกและหากมีคอลัมน์ที่เรียกว่าactiveและ ฉันต้องการมีเพียงหนึ่งแบบสอบถามที่จะทำมันทั้งหมดแทนที่จะเป็นสองคนแยกต่างหากและอาศัย mysql เพื่อโยนข้อผิดพลาดดังนั้นฉันรู้ว่าจะใช้อีกคนหนึ่ง
23 mysql  select  count 

2
ใช้ SELECT ในส่วนคำสั่ง WHERE ของ SELECT อื่น
ผมได้ทำแอพลิเคชันระยะไกลร่างด้านบนของ libpq สำหรับPostrgreSQL มันทำงานได้ดี แต่ฉันได้ทำโปรไฟล์การทำงานทั่วไปของแอปพลิเคชัน สำหรับผลลัพธ์ทางธุรกิจแต่ละครั้งสุดท้ายที่ฉันผลิตมันเกิดขึ้นที่ฉันเรียกบางอย่างเช่น 40 ข้อเลือก (มากกว่า tcpip) ฉันมีการเตือนความจำจาก SQL-Server เตือนให้ฉันลดจำนวนการโต้ตอบระหว่างแอปพลิเคชันระยะไกลและฐานข้อมูล จากการวิเคราะห์การเลือกของฉันฉันคิดว่าฉันสามารถลดจำนวนนี้เป็น 3 SELECTข้อโดยใช้การรวม แต่ผมจำไม่ได้ว่าไวยากรณ์สำหรับการใช้ผลของอีกSELECTSELECT เช่น: SELECT * FROM individual INNER JOIN publisher ON individual.individual_id = publisher.individual_id WHERE individual.individual_id = 'here I would like to use the results of a another select' สิ่งนี้SELECTจะเป็นสิ่งที่เรียบง่าย: SELECT identifier FROM another_table WHERE …

4
วิธีเข้าร่วมสองตารางเพื่อให้หายไปแถวในตารางที่สอง
ในระบบการลงคะแนนแบบง่าย ๆ เช่น CREATE TABLE elections ( election_id int(11) NOT NULL AUTO_INCREMENT, title varchar(255), CREATE TABLE votes ( election_id int(11), user_id int(11), FOREIGN KEYs สำหรับการรับรายชื่อผู้มีสิทธิเลือกตั้งผู้ใช้ JOIN ต่อไปนี้จะถูกใช้ SELECT * FROM elections JOIN votes USING(election_id) WHERE votes.user_id='x' แต่จะได้รับรายชื่อการเลือกตั้งที่ผู้ใช้ไม่ได้ลงคะแนนได้อย่างไร
21 join  select 

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