Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, alguém teria uma lista de valores que mostre bem claramente os efeitos de um ORDER BY múltiplo?
Por exemplo:
SELECT * FROM users ORDER BY name asc, city desc
Que, até onde eu entendo deveria retornar a lista de usuários ordenada em ordem ascendente pelo nome ao mesmo tempo que descendente pela sua cidade.
Isso se deu porque o Andrey postou um Desafio em PHP que a princípio eu achei que seria mais complicado pra mim dado o não tão constante contato com banco de dados.
Antes de ele dizer que não precisaria implementar a lógica do Desafio nas queries em si, eu já fui me adiantando criando uma tabela e alguns possíveis valores (alguns programadores do Fórum) mas não consegui enxergar o efeito de múltipla ordenação.
Mas não estou bem certo se é isso memso.
Se vale, foi essa estrutura simples que montei:
-- MySQL dump 10.13 Distrib 5.5.16, for Win32 (x86)
--
-- Host: localhost Database: imasters
-- ------------------------------------------------------
-- Server version 5.5.16
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table fifthchallenge
--
DROP TABLE IF EXISTS `fifthchallenge`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `fifthchallenge` (
`pid` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`lastName` varchar(128) DEFAULT NULL,
`city` varchar(128) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf16;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table fifthchallenge
--
LOCK TABLES `fifthchallenge` WRITE;
/*!40000 ALTER TABLE `fifthchallenge` DISABLE KEYS */;
INSERT INTO `fifthchallenge` VALUES (1,'Bruno','Augusto','Itajubá'),(2,'Henrique','Barcelos','São Carlos'),(4,'Motta',NULL,'Niterói'),(5,'Prog',NULL,'Rio de Janeiro'),(6,'quintelab',NULL,'Localhost'),(7,'Andrey','Knupp','Minas Gerais'),(8,'Carlos','Coelho','Gravataí'),(9,'Matias','Rezende','São José'),(10,'William','Bruno','São Paulo'),(11,'Mário','Monteiro','Belém'),(12,'João','Batista Neto','Franca');
/*!40000 ALTER TABLE `fifthchallenge` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2012-09-09 12:10:23
Daí eu rodei uma query similar à essa citada e obviamente não produziu muita coisa perceptível.
Então adicionei um registro falso a mais: Mário Mário vivendo em Mushroom Kingdom ( :lol: )
Como agora o nome conflita com um dos outros registros (Mário Monteiro) pude ver com maior clareza que o Mário Mário foi listado antes, devido à sua cidade começar com 'M' ao passo que a do outro começa com 'B'.
É isso mesmo?
Carregando comentários...