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

MySQL: แสดง Substring ความยาวต่างกันและรวมผลลัพธ์ (UNION ALL)

การใช้ SUBSTR() และ UNION ALL

SUBSTR(str, start, len) ดึงส่วนของสตริง UNION ALL รวมผลลัพธ์จากหลาย SELECT (เก็บ Duplicate ไว้)

ตัวอย่าง

mysql> create table DemoTable856(Title text);
Query OK, 0 rows affected (0.89 sec)
mysql> insert into DemoTable856 values('Introduction to MySQL');
mysql> insert into DemoTable856 values('Java in depth');
mysql> insert into DemoTable856 values('C++ with Data Structure');

คำสั่ง: ดึง 12 ตัวแรก และ 4 ตัวแรก แล้วรวมกัน

mysql> select substr(Title, 1, 12) from DemoTable856
UNION ALL
select substr(Title, 1, 4) from DemoTable856;

ผลลัพธ์ (6 แถว):

+--------------------+
| substr(Title,1,12) |
+--------------------+
| Introduction       |
| Java in dept       |
| C++ with Dat       |
| Intr               |
| Java               |
| C++                |
+--------------------+

UNION vs UNION ALL

คำสั่งพฤติกรรมประสิทธิภาพ
UNIONลบแถวซ้ำ (DISTINCT)ช้ากว่า (ต้อง Sort/Hash)
UNION ALLเก็บทุกแถว (รวมซ้ำ)เร็วกว่า

การใช้งานจริง

-- รวมผลลัพธ์จากตารางต่างกัน
SELECT name FROM customers UNION ALL SELECT name FROM vendors;

-- เพิ่มคอลัมน์แยกแหล่งที่มา
SELECT 'customer' as source, name FROM customers
UNION ALL
SELECT 'vendor' as source, name FROM vendors;

สรุป

ใช้ SUBSTR() ดึงส่วนของข้อความ UNION ALL รวมผลลัพธ์หลายคิวรี่ ใช้ UNION ALL เมื่อไม่ต้องลบซ้ำ เพื่อประสิทธิภาพ