1
votes

Échantillonnez 3 lignes aléatoires puis classez-les par ordre alphabétique selon une autre propriété

Je me demandais simplement si je pouvais obtenir trois résultats aléatoires et les classer dans une autre colonne par ordre alphabétique.

Exemple :

SELECT TOP(3)[Name] 
FROM Table 
ORDER BY NEWID()
¿ORDER BY [Surname]?

Merci d'avance.


8 commentaires

Avec un TOP, je parie que c'est mssql


J'ai supprimé ces balises dbms en conflit. Remettez-en un, celui des dbms réellement utilisés.


Pourquoi voulez-vous des lignes aléatoires?


@ArnaudPeralta TOP est une expression SQL standard. C'est NEWID () qui est spécifique à SQL Server


@PanagiotisKanavos - TOP n'est pas pas le SQL standard


TOP n'est pas SQL standard ... FETCH FIRST est la manière ANSI SQL!


@jarlh j'oublie toujours ça! Chaque décennie, la même chose.


Et nous sommes presque à la fin de cette décennie, donc à la même époque l'année prochaine? :-)


4 Réponses :


2
votes

Je ne suis pas sûr de comprendre le problème à 100%, mais avec un deuxième ORDER BY , il triera tous les différents ID.

J'ai fait un CTE pour obtenir ce résultat. p >

WITH CTE AS
(
SELECT TOP(3)[Name] 
FROM Table 
ORDER BY NEWID()
)

SELECT *
FROM CTE
ORDER BY [Surname]


2 commentaires

Merci Arnaud, mais j'ai dû sélectionner, [Nom], [Prénom] pour travailler, mais ça l'a fait, MERCI


Heureux de vous avoir aidé, n'oubliez pas de marquer ceci comme une bonne réponse et un vote favorable pour d'autres personnes.



1
votes

Avoir une table dérivée (sous-requête) où vous sélectionnez 3 lignes aléatoires. ORDER BY son résultat.

select [Name]
from
(
    SELECT TOP(3) [Name], [Surname]
    FROM Table 
    ORDER BY NEWID()
) dt
ORDER BY [Surname]


0 commentaires

0
votes

Vous pouvez essayer ceci.

SELECT T.*
FROM
    (
    SELECT TOP(3)[Name], [Surname]
    FROM Table 
    ORDER BY NEWID()
    ) AS T
ORDER BY [Surname];


0 commentaires

0
votes

vous pouvez essayer ceci -

declare @name table
(Name varchar(20), SurName varchar(20))

insert into @name
values
('mukesh', 'arora'),
('amit', 'kumar'),
('Vijay', 'gupta'),
('jai', 'poddar'),
('vishal', 'sharma')

select Name from
( 
SELECT TOP(3)[Name] , [Surname]
FROM @name 
ORDER BY NEWID()
) a
ORDER BY [Surname]


0 commentaires