MySQL հարցումը տեսակավորելու համար ըստ վերջին տողի որոշակի նիշի:
Դրա համար կարող եք օգտագործել CASE հայտարարությունը: Տեսակավորելու համար օգտագործեք ORDER BY կետը: Եկեք նախ ստեղծենք աղյուսակ.
mysql> create table DemoTable
-> (
-> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName varchar(20)
-> );
Query OK, 0 rows affected (0.54 sec)
Տեղադրեք որոշ գրառումներ աղյուսակում՝ օգտագործելով insert հրամանը: Որոշ գրառումներ ունեն որոշակի վերջին տող, ինչպիսիք են -D և այլն:
mysql> insert into DemoTable(ClientName) values('Mike');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(ClientName) values('John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(ClientName) values('John-D');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(ClientName) values('John-Smith');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(ClientName) values('Mike-Smith');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(ClientName) values('Mike-D');
Query OK, 1 row affected (0.15 sec)
Ցուցադրել բոլոր գրառումները աղյուսակից՝ օգտագործելով select հայտարարությունը.
mysql> select *from DemoTable;
Սա կստեղծի հետևյալ արդյունքը.
+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 1 | Mike |
| 2 | John |
| 3 | John-D |
| 4 | John-Smith |
| 5 | Mike-Smith |
| 6 | Mike-D |
+----------+------------+
6 rows in set (0.00 sec)
Ահա վերջին տողի որոշակի նիշով տեսակավորելու հարցումը.
mysql> select
-> case
-> when right(ClientName,length(ClientName)-instr(ClientName,'-')) = `ClientName` THEN ''
-> else right(`ClientName`,length(`ClientName`)-INSTR(`ClientName`,'-'))
-> end as `last`,
-> `ClientName`
-> from
-> DemoTable
-> ORDER BY
-> `last`,`ClientName`;
Սա կստեղծի հետևյալ արդյունքը.
+-------+------------+
| last | ClientName |
+-------+------------+
| | John |
| | Mike |
| D | John-D |
| D | Mike-D |
| Smith | John-Smith |
| Smith | Mike-Smith |
+-------+------------+
6 rows in set (0.00 sec)