sql >> Databáze >  >> RDS >> Mysql

Třídění v MySQL pomocí pořadí podle klauzule

Tento tutoriál je součástí série Naučte se základní SQL dotazy pomocí MySQL. V tomto tutoriálu probereme dotazy SQL k provádění řazení řádků tabulky v MySQL pomocí klauzule ORDER BY s klíčovými slovy ASC nebo DESC pro řazení ve vzestupném nebo sestupném pořadí.

Řadit podle dotazu

OBJEDNAT podle klauzuli lze použít k řazení řádků tabulky buď ve vzestupném nebo sestupném pořadí.

# ORDER BY - Syntax - Default Ascending
SELECT * FROM `table_name` ORDER BY `column_name`;

# ORDER BY - Syntax - Ascending
SELECT * FROM `table_name` ORDER BY `column_name` ASC;

# ORDER BY - Syntax - Descending
SELECT * FROM `table_name` ORDER BY `column_name` DESC;

Vysvětlení dotazu

OBJEDNAT PODLE klauzuli lze použít k řazení řádků zadáním sloupce, který se má pro řazení použít. Můžeme také použít klauzuli ORDER BY s WHERE k provádění operací filtrování nebo vyhledávání s řazením.

Pro řazení řádků musíme určit alespoň jeden sloupec pomocí klauzule ORDER BY. Můžeme také určit pořadí pro řazení řádků ve vzestupném nebo sestupném pořadí pomocí klíčových slov ASC nebo DESC.

Můžeme také použít vícenásobné operace řazení, kde lze následné řazení použít po výsledcích vrácených operacemi řazení, které jsou na prvním místě.

Příklady

Tato část obsahuje příklady provedení řazení pomocí klauzule ORDER BY s klauzulí WHERE a bez ní. Pomocí níže uvedeného dotazu vytvořte uživatelskou tabulku obsahující sloupce id, jméno, příjmení a aktivní sloupce pro uložení uživatelských dat.

# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));

K vložení dat do uživatelské tabulky lze použít níže uvedený dotaz.

# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 1, 'John', 'Smith', 1 ),
( 2, 'Rick', 'Jones', 1 ),
( 3, 'John', 'Ponting', 0 ),
( 4, 'Harsh', 'Upadhyay', 1 ),
( 5, 'Tajwinder', 'Singh', 0 );

Výše zmíněný dotaz vloží do tabulky 5 řádků obsahujících id, jméno, příjmení a aktivní sloupce, které představují 5 různých uživatelů.

Nyní použijeme klauzuli ORDER BY bez klauzule WHERE k řazení řádků pomocí sloupců jména nebo příjmení uživatelské tabulky. To lze provést pomocí klauzule ORDER BY v MySQL, jak je uvedeno níže.

# ORDER BY - Ascending
SELECT * FROM `user` ORDER BY `first_name`;
SELECT * FROM `user` ORDER BY `first_name` ASC;

# Result
4 Harsh Upadhyay 1
1 John Smith 1
3 John Ponting 0
2 Rick Jones 1
5 Tajwinder Singh 0


# ORDER BY - Descending
SELECT * FROM `user` ORDER BY `first_name` DESC;

# Result
5 Tajwinder Singh 0
2 Rick Jones 1
1 John Smith 1
3 John Ponting 0
4 Harsh Upadhyay 1


# ORDER BY - Ascending - Multiple
SELECT * FROM `user` ORDER BY `first_name`, `last_name`;

# Result
4 Harsh Upadhyay 1
3 John Ponting 0
1 John Smith 1
2 Rick Jones 1
5 Tajwinder Singh 0

Výše uvedené dotazy provádějí řazení ve vzestupném a sestupném pořadí pomocí klauzule ORDER BY. Nyní seřadíme řádky pomocí klauzule WHERE, jak je uvedeno níže.

# ORDER BY - Ascending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name`;

# Result
4 Harsh Upadhyay 1
1 John Smith 1
2 Rick Jones 1


# ORDER BY - Descending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name` DESC;

# Result
2 Rick Jones 1
1 John Smith 1
4 Harsh Upadhyay 1

Takto můžeme použít klauzuli ORDER BY sa bez klauzule WHERE k řazení řádků tabulky podle konkrétních sloupců.


  1. Jak vytvořit vnořenou tabulku pomocí uživatelsky definovaného datového typu v databázi Oracle

  2. Jak vyřešit problémy s oprávněními při obnově databáze PostgreSQL

  3. Jak získám aktuální název časového pásma v Postgres 9.3?

  4. Zabezpečení databáze Oracle:Audit databáze