Ce qui ne l'opérateur := moyenne dans mysql?
J'ai un mysql
table (scho_id
,school_name
,school_views
).
Je cherchais un mysql
requête pour obtenir rank
des écoles sur la base de school_views
.
J'ai trouvé cette solution sur stackoverflow.
SET @points := -1, @num := 0;
SELECT scho_id
, school_views
, @num := if(@points = school_views, @num, @num + 1) as school_rank
, @points := school_info.school_views as dummy
FROM school_info
ORDER BY school_views desc, scho_id asc;
Cela a résolu mon problème, mais j'ai remarqué un nouvel opérateur :=
dans cette requête. Je suis curieux de connaître le sens et les usages de cet opérateur.
OriginalL'auteur prograshid | 2016-09-07
Vous devez vous connecter pour publier un commentaire.
Dans MySQL,
:=
est un opérateur d'affectation:tout
=
est un test d'égalité:Notez que vous POUVEZ faire à la fois l'égalité des tests ET de l'affectation avec
set
requêtes:qui va provoquer
@foo
être attribuéfalse
, le résultat booléen de'bar' = 'baz'
. Il s'exécute comme suit:=
(opérateur de test d'égalité ) travailler comme opérateur d'affectation si elle est utilisée avecSET
? E. g -SET @param='some value'
et avecUPDATE
déclaration par exempleUPDATE table_name SET column_name='value'
oui. la première
=
dans unset
ne affectation. un ensemble de requêtes ne peut pas revenir en quoi que ce soit, de sorte qu'il n'a pas beaucoup de sens d'avoir=
faire un test d'égalité. le résultat de ce test ne pouvait pas être retournés. cependant, maintenant que cela va faire des tests ET de l'affectation:set @foo = 'bar' = 'baz';
.@foo
sera la cession, le résultat booléen de l''bar' = 'baz'
de test d'égalité, par exemple, un faux.OriginalL'auteur Marc B