เพรดิเคต ALL, DISTINCT, DISTINCTROW, TOP

สิ่งสำคัญ:  บทความนี้เป็นการแปลด้วยเครื่อง โปรดดู ข้อจำกัดความรับผิดชอบ โปรดดูบทความฉบับภาษาอังกฤษ ที่นี่ เพื่อใช้อ้างอิง

ระบุระเบียนที่เลือกกับแบบสอบถาม SQL

ไวยากรณ์

เลือก [ทั้งหมด | ความแตกต่าง | DISTINCTROW | [บนn [เปอร์เซ็นต์]]]
จากตาราง

คำสั่ง select ที่ประกอบด้วยเพรดิเคตเหล่านี้มีส่วนต่าง ๆ ต่อไปนี้:

ส่วน

คำอธิบาย

ALL

ถ้าคุณไม่ต้องรวมหนึ่งเพรดิเคตอาร์เรย์กำหนด Microsoft Access database engine เลือกระเบียนที่ตรงกับเงื่อนไขในคำสั่ง SQL ทั้งหมด ตัวอย่างต่อไปนี้ที่สองจะเทียบเท่ากัน และส่งกลับระเบียนทั้งหมดจากตารางพนักงาน:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

ไม่ซ้ำกัน

ตัดระเบียนที่ประกอบด้วยข้อมูลที่ซ้ำกันในเขตข้อมูลที่เลือก เมื่อต้องการจะรวมอยู่ในผลลัพธ์ของคิวรี ค่าแต่ละเขตข้อมูลที่แสดงอยู่ในคำสั่ง select ต้องไม่ซ้ำกัน ตัวอย่างเช่น พนักงานหลายอย่างที่แสดงอยู่ในตารางพนักงานอาจมีนามสกุลเดียวกัน ถ้าสองระเบียนนั้นประกอบด้วย Smith ในเขตข้อมูลนามสกุล คำสั่ง SQL ต่อไปนี้ส่งกลับระเบียนเดียวเท่านั้นที่ประกอบด้วย Smith:

SELECT DISTINCT LastName
FROM Employees;

ถ้าคุณไม่ได้ใส่ DISTINCT แบบสอบถามนี้ส่งกลับระเบียนทั้งสอง Smith

ถ้าคำสั่ง select ประกอบด้วยมากกว่าหนึ่งเขตข้อมูล ชุดของค่าจากเขตข้อมูลทั้งหมดต้องไม่ซ้ำกันสำหรับระเบียนจะรวมอยู่ในผลลัพธ์

ผลลัพธ์ของคิวรีที่ใช้ DISTINCT จะไม่สามารถอัปเดตได้ และแสดงการเปลี่ยนแปลงที่ทำ โดยผู้ใช้อื่น

DISTINCTROW

ละเว้นข้อมูลโดยยึดตามทั้งระเบียนที่ซ้ำกัน เขตข้อมูลเพียงไม่ซ้ำกัน ตัวอย่าง คุณไม่สามารถสร้างคิวรีที่รวมตารางลูกค้าและใบสั่งซื้อบนเขตข้อมูลรหัสลูกค้า ตารางลูกค้าประกอบด้วยเขตข้อมูลรหัสลูกค้าที่ไม่ซ้ำกัน แต่ตารางใบสั่งซื้อไม่เนื่องจากแต่ละลูกค้าสามารถมีหลายใบสั่งซื้อ คำสั่ง SQL ต่อไปนี้แสดงวิธีที่คุณสามารถใช้ DISTINCTROW เพื่อสร้างรายการ ของบริษัทที่มีการสั่งซื้ออย่างน้อยหนึ่งรายการ แต่ไม่ มีรายละเอียดเกี่ยวกับใบสั่งซื้อเหล่านั้น:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

ถ้าคุณไม่ได้ใส่ DISTINCTROW คิวรีนี้ก่อให้เกิดหลายแถวสำหรับแต่ละบริษัทที่มีการสั่งซื้อมากกว่าหนึ่งรายการ

DISTINCTROW มีเอฟเฟ็กต์ก็ต่อเมื่อคุณเลือกเขตข้อมูล จากบาง แต่ไม่ได้ทั้งหมด ตารางที่ใช้ในแบบสอบถาม DISTINCTROW จะถูกละเว้น ถ้าแบบสอบถามของคุณมีเพียงหนึ่งตาราง หรือ ถ้าคุณแสดงเขตข้อมูลจากตารางทั้งหมด

บนn [เปอร์เซ็นต์]

ส่งกลับจำนวนของระเบียนที่อยู่ที่ด้านบนหรือด้านล่างของช่วงที่ระบุ โดยเรียงลำดับ สมมติว่า คุณต้องการให้ชื่อของนักเรียน 25 บนสุดจากคลาสของ 1994:

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

ถ้าคุณไม่ต้องรวมส่วนคำสั่ง by คิวรีจะส่งกลับชุดกำหนดของระเบียน 25 จากตารางนักเรียนที่ตรงกับคำสั่ง where

เพรดิเคตบนไม่เลือกระหว่างค่าที่เท่ากัน ในตัวอย่างข้างต้น ถ้ายี่สิบห้า และ 6 ยี่สิบสูงสุดคะแนนจุดค่าเฉลี่ยเท่ากัน คิวรีจะส่งกลับระเบียน 26

คุณยังสามารถใช้คำสงวนเปอร์เซ็นต์เพื่อส่งกลับเปอร์เซ็นต์ของระเบียนที่อยู่ที่ด้านบนหรือด้านล่างของช่วงที่ระบุ โดยเรียงลำดับ สมมติว่า แทนที่เป็นนักเรียนด้านบนสุด 25 คุณต้องด้านล่าง 10 เปอร์เซ็นต์ของคลาส:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

เพรดิเคต ASC ระบุการส่งกลับค่าที่ด้านล่าง ค่าที่เป็นไปตามด้านบนต้องเป็นจำนวนเต็ม

ด้านบนมีผลต่อว่าคิวรีจะสามารถอัปเดตได้หรือไม่

table

ชื่อของตารางที่ระเบียนถูกดึงออกมา



หมายเหตุ: ข้อจำกัดความรับผิดชอบของการแปลด้วยเครื่อง: บทความนี้มีการแปลด้วยระบบคอมพิวเตอร์โดยไม่มีการดำเนินการโดยบุคคล Microsoft จัดให้มีการแปลด้วยเครื่องนี้เพื่อช่วยให้ผู้ใช้ที่ไม่ได้พูดภาษาอังกฤษสามารถใช้ประโยชน์จากเนื้อหาเกี่ยวกับผลิตภัณฑ์ บริการและเทคโนโลยีของ Microsoft เนื่องจากบทความมีการแปลด้วยเครื่อง อาจมีข้อผิดพลาดด้านคำศัพท์ ไวยากรณ์หรือรูปประโยค

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Office Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ!

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×