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

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ระบุระเบียนที่เลือกด้วยคิวรี SQL

ไวยากรณ์

เลือก [ทั้งหมด | ทั้งหมด' DISTINCT | DISTINCTROW | [ด้านบน n [เปอร์เซ็นต์]]]
ตาราง FROM

คําสั่ง SELECT ที่มีเพรดิเคตเหล่านี้มีส่วนต่างๆ ดังนี้:

ส่วน คำอธิบาย
ALL สมมติว่าถ้าคุณไม่มีเพรดิเคตตัวใดตัวหนึ่ง กลไกจัดการฐานข้อมูลของ Microsoft Access จะเลือกระเบียนทั้งหมดที่ตรงกับเงื่อนไขในคําสั่ง SQL สองตัวอย่างต่อไปนี้เทียบเท่ากันและส่งกลับระเบียนทั้งหมดจากตารางพนักงาน:SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
เลือก*
FROM Employees
ORDER BY EmployeeID;
DISTINCT ละเว้นระเบียนที่มีข้อมูลที่ซ้ํากันในเขตข้อมูลที่เลือก เมื่อต้องการรวมไว้ในผลลัพธ์ของคิวรี ค่าสําหรับแต่ละเขตข้อมูลที่แสดงอยู่ในคําสั่ง SELECT ต้องไม่ซ้ํากัน ตัวอย่างเช่น พนักงานหลายคนที่แสดงอยู่ในตาราง Employees อาจมีนามสกุลเหมือนกันได้ ถ้าสองระเบียนมี Smith ในเขตข้อมูล LastName คําสั่ง SQL ต่อไปนี้จะส่งกลับระเบียนที่มี Smith เพียงระเบียนเดียว:
เลือก ชื่อนามสกุล DISTINCT
FROM Employees;
ถ้าคุณละ DISTINCT คิวรีนี้จะส่งกลับระเบียน Smith ทั้งสองระเบียน
ถ้าส่วนคําสั่ง SELECT มีเขตข้อมูลมากกว่าหนึ่งเขตข้อมูล การผสมค่าจากเขตข้อมูลทั้งหมดจะต้องไม่ซ้ํากันสําหรับระเบียนที่กําหนดให้รวมอยู่ในผลลัพธ์
ผลลัพธ์ของคิวรีที่ใช้ DISTINCT ไม่สามารถอัปเดตได้และจะไม่แสดงการเปลี่ยนแปลงที่ตามมาที่ทําโดยผู้ใช้อื่น
DISTINCTROW ละเว้นข้อมูลโดยยึดตามระเบียนที่ซ้ํากันทั้งหมด ไม่ใช่เฉพาะเขตข้อมูลที่ซ้ํากัน ตัวอย่างเช่น คุณสามารถสร้างคิวรีที่รวมตารางลูกค้าและตารางใบสั่งซื้อบนเขตข้อมูล CustomerID ตารางลูกค้าไม่มีเขตข้อมูลรหัสลูกค้าที่ซ้ํากัน แต่ตารางใบสั่งซื้อมีเพราะลูกค้าแต่ละรายสามารถมีใบสั่งซื้อได้หลายใบ คําสั่ง SQL ต่อไปนี้แสดงวิธีที่คุณสามารถใช้ DISTINCTROW เพื่อสร้างรายชื่อของบริษัทที่มีคําสั่งซื้ออย่างน้อยหนึ่งรายการ แต่ไม่มีรายละเอียดใดๆ เกี่ยวกับใบสั่งเหล่านั้น:
เลือก DISTINCTROW CompanyName
คําสั่ง FROM Customers INNER JOIN
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;
ถ้าคุณละ DISTINCTROW คิวรีนี้จะสร้างแถวหลายแถวสําหรับแต่ละบริษัทที่มีมากกว่าหนึ่งคําสั่งซื้อ
DISTINCTROW จะมีผลเฉพาะเมื่อคุณเลือกเขตข้อมูลจากบางเขตข้อมูล แต่ไม่ใช่ทั้งหมด ตารางที่ใช้ในคิวรี DISTINCTROW จะถูกละเว้น ถ้าคิวรีของคุณมีเพียงหนึ่งตาราง หรือถ้าคุณแสดงผลเขตข้อมูลจากตารางทั้งหมด
N อันดับแรก [เปอร์เซ็นต์] ส่งกลับระเบียนจํานวนหนึ่งที่อยู่ด้านบนหรือด้านล่างของช่วงที่ระบุโดยส่วนคําสั่ง ORDER BY สมมติว่าคุณต้องการชื่อของนักเรียน 25 อันดับแรกจากชั้นเรียนของปี 1994:
เลือก 25 อันดับแรก
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
ถ้าคุณไม่รวมส่วนคําสั่ง ORDER BY คิวรีจะส่งกลับชุดระเบียนที่กําหนดโดยพลการ 25 ระเบียนจากตาราง Students ที่ตรงกับส่วนคําสั่ง WHERE
เพรดิเคต TOP ไม่ได้เลือกระหว่างค่าที่เท่ากัน ในตัวอย่างก่อนหน้า ถ้าค่าเฉลี่ยคะแนนสูงสุดยี่สิบห้าและยี่สิบหกเหมือนกัน คิวรีจะส่งกลับระเบียน 26 ระเบียน
คุณยังสามารถใช้คําสงวน PERCENT เพื่อส่งกลับเปอร์เซ็นต์ของระเบียนที่อยู่ที่ด้านบนหรือด้านล่างของช่วงที่ระบุโดยส่วนคําสั่ง ORDER BY สมมติว่า แทนที่จะเป็นนักเรียน 25 คนแรก คุณต้องการ 10 เปอร์เซ็นต์ล่างสุดของชั้นเรียน:
เลือก 10 เปอร์เซ็นต์บนสุด
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;
เพรดิเคต ASC ระบุการส่งกลับค่าด้านล่าง ค่าที่ตามหลัง TOP ต้องเป็นจํานวนเต็มที่ไม่มีลายเซ็น
ฟังก์ชัน TOP จะไม่มีผลต่อคิวรีที่สามารถอัปเดตได้หรือไม่
table ชื่อของตารางที่ระเบียนถูกดึงออกมา