คำสั่งหลัก
ใช้ฟังก์ชัน ABS() คืนค่าสัมบูรณ์ (ค่าบวกเสมอ) ของผลลัพธ์การลบ
รูปแบบคำสั่ง
SELECT ABS(FirstNumber - SecondNumber) AS diff FROM yourTable ORDER BY diff DESC;
ตัวอย่างครบถ้วน
1. สร้างตาราง
mysql> create table findDifferenceDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstNumber float,
-> SecondNumber float
-> );
Query OK, 0 rows affected (0.60 sec)
2. เพิ่มข้อมูล
mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(4.2,2.3); Query OK, 1 row affected (0.20 sec) mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(23.4,5.6); Query OK, 1 row affected (0.14 sec) mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(5.8,34.56); Query OK, 1 row affected (0.16 sec) mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(7.8,7.2); Query OK, 1 row affected (0.16 sec) mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(12.8,10.2); Query OK, 1 row affected (0.13 sec)
3. ดูข้อมูล
mysql> select * from findDifferenceDemo;
+----+-------------+--------------+ | Id | FirstNumber | SecondNumber | +----+-------------+--------------+ | 1 | 4.2 | 2.3 | | 2 | 23.4 | 5.6 | | 3 | 5.8 | 34.56 | | 4 | 7.8 | 7.2 | | 5 | 12.8 | 10.2 | +----+-------------+--------------+
4. หาความต่างสัมบูรณ์ เรียงมากไปน้อย
mysql> SELECT ABS(FirstNumber - SecondNumber) AS diff
-> from findDifferenceDemo
-> order by diff desc;
+--------------------+ | diff | +--------------------+ | 28.760001182556152 | | 17.799999713897705 | | 2.6000003814697266 | | 1.8999998569488525 | | 0.6000003814697266 | +--------------------+
การคำนวณย้อนกลับ (Verification)
| Id | First | Second | First-Second | ABS |
|---|---|---|---|---|
| 3 | 5.8 | 34.56 | -28.76 | 28.76 ✓ |
| 2 | 23.4 | 5.6 | 17.8 | 17.8 ✓ |
| 5 | 12.8 | 10.2 | 2.6 | 2.6 ✓ |
| 4 | 7.8 | 7.2 | 0.6 | 0.6 ✓ |
| 1 | 4.2 | 2.3 | 1.9 | 1.9 ✓ |
ประยุกต์ใช้: หาคู่ที่ใกล้เคียงที่สุด
SELECT *, ABS(target_value - column_value) AS distance FROM measurements ORDER BY distance ASC LIMIT 5;
ฟังก์ชันคณิตศาสตร์ที่เกี่ยวข้อง
ABS(x)- ค่าสัมบูรณ์CEIL(x)/CEILING(x)- ปัดขึ้นFLOOR(x)- ปัดลงROUND(x, d)- ปัดทศนิยมSIGN(x)- -1, 0, 1SQRT(x)- รากที่สอง
หมายเหตุ: FLOAT มีความแม่นยำจำกัด (approx 7 digits) สำหรับการคำนวณเงิน/การเงิน ควรใช้ DECIMAL