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

รวมคอลัมน์ FirstName และ CountryName ใน MySQL ด้วย CONCAT และ HAVING

ใช้ CONCAT() รวมคอลัมน์สตริง และ HAVING กรองผลลัพธ์หลังรวม (ไม่ใช่ WHERE เพราะกรองหลัง Aggregation/Expression)

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    FirstName varchar(100), 
    CountryName varchar(100) ); 
Query OK, 0 rows affected (0.56 sec)

เพิ่มข้อมูลชื่อและประเทศ

mysql> insert into DemoTable values('Adam','US'); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('David','AUS'); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris','UK'); 
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('John','US'); 
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Carol','AUS'); 
Query OK, 1 row affected (0.14 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;
+-----------+-------------+
| FirstName | CountryName |
+-----------+-------------+
| Adam      | US          |
| David     | AUS         |
| Chris     | UK          |
| John      | US          |
| Carol     | AUS         |
+-----------+-------------+
5 rows in set (0.00 sec)

คำสั่ง CONCAT แล้ว HAVING กรองเฉพาะที่มี 'John'

mysql> select concat(FirstName, ' ', CountryName) AS NameWithCountry 
from DemoTable having NameWithCountry LIKE '%John%';

ผลลัพธ์

+-----------------+
| NameWithCountry |
+-----------------+
| John US         |
+-----------------+
1 row in set (0.00 sec)

คำอธิบาย: HAVING ใช้กรองผลลัพธ์ของ SELECT (หลังคำนวณ Expression) ในขณะที่ WHERE กรองก่อน SELECT ในที่นี้ต้องกรองชื่อที่รวมแล้ว (NameWithCountry) จึงใช้ HAVING

หมายเหตุ: หากกรองแค่ FirstName = 'John' ให้ใช้ WHERE ปกติ จะมีประสิทธิภาพดีกว่า