Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีจัดเรียงผลต่างระหว่างสองคอลัมน์ใน MySQL

คำนวณผลต่างและจัดเรียงด้วย ORDER BY

คำนวณ Value1 - Value2 ใน SELECT แล้วใช้ Alias ใน ORDER BY เรียงจากมากไปน้อย (DESC) หรือน้อยไปมาก (ASC)

ตัวอย่างสร้างตารางและข้อมูล

CREATE TABLE DemoTable (Value1 INT, Value2 INT);
INSERT INTO DemoTable VALUES (10, 40), (50, 5), (51, 56), (52, 78), (90, 7);

ข้อมูลในตาราง

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | 40     |
| 50     | 5      |
| 51     | 56     |
| 52     | 78     |
| 90     | 7      |
+--------+--------+

คำสั่งคำนวณผลต่างและเรียง DESC

SELECT (Value1 - Value2) AS Sub 
FROM DemoTable 
ORDER BY Sub DESC;

ผลลัพธ์

+------+
| Sub  |
+------+
| 83   |
| 45   |
| -5   |
| -26  |
| -30  |
+------+

คำอธิบาย:

  • (Value1 - Value2) AS Sub คำนวณผลต่าง ตั้งชื่อ Alias ว่า Sub
  • ORDER BY Sub DESC เรียงตาม Alias จากมากไปน้อย (83, 45, -5, -26, -30)
  • สามารถใช้ ORDER BY (Value1 - Value2) DESC โดยไม่ต้อง Alias ก็ได้

เพิ่มคอลัมน์ต้นฉบับเพื่ออ้างอิง:

SELECT Value1, Value2, (Value1 - Value2) AS Difference
FROM DemoTable
ORDER BY Difference DESC;

ประยุกต์ใช้: คำนวณกำไร/ขาดทุน (Revenue - Cost), ความต่างคะแนน, ยอดคงเหลือ (Income - Expense) แล้วจัดอันดับ