SELECT 1 FROM TABLE_NAME
signifie "Retourner 1 de la table". Il est assez banal en soi, donc normalement, il sera utilisé avec WHERE
et souvent EXISTS
(comme le note @gbn, ce n'est pas nécessairement une bonne pratique, c'est cependant suffisamment courant pour être noté, même si ce n'est pas vraiment significatif (ceci dit, je vais l'utiliser parce que d'autres l'utilisent et que c'est "plus évident" immédiatement. Bien sûr, cela pourrait être une question visqueuse de poule et d'œuf, mais je ne m'y attarde généralement pas)).
SELECT * FROM TABLE1 T1 WHERE EXISTS (
SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
);
En gros, la méthode ci-dessus renverra tout ce qui se trouve dans la table 1 et qui a un identifiant correspondant dans la table 2. (Il s'agit évidemment d'un exemple artificiel, mais je pense qu'il transmet l'idée. Personnellement, je ferais probablement ce qui précède comme suit SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);
car je considère cela comme FAR plus explicite pour le lecteur, à moins qu'il n'y ait une raison circonstancielle impérieuse de ne pas le faire).
EDITAR
Il y a en fait un cas que j'avais oublié jusqu'à maintenant. Dans le cas où vous essayez de déterminer l'existence d'une valeur dans la base de données à partir d'une langue extérieure, parfois SELECT 1 FROM TABLE_NAME
sera utilisé. Cette méthode n'offre pas d'avantage significatif par rapport à la sélection d'une colonne individuelle, mais, selon la mise en œuvre, elle peut offrir des gains substantiels par rapport à la sélection d'une colonne individuelle. SELECT *
En effet, il arrive souvent que plus le nombre de colonnes que la BD renvoie à un langage est élevé, plus la structure de données est grande, ce qui signifie qu'il faut plus de temps.
0 votes
Montrez-nous la requête complète s'il vous plaît