2017-08-22 3 views
2

Est-ce que MySQL exécute une requête dans l'ordre où il est écrit?Est-ce que MySQL exécute une requête dans l'ordre où il est écrit?

Je remarque parfois que l'alias (par exemple dans le cas ci-dessous: clients AS c) est dans une ligne après l'alias est utilisé. Habituellement, dans une autre programmation, vous déclarez une variable en premier, avant de l'utiliser. Mais Mysql j'ai vu des choses comme ceci:

SELECT SUM(balance) AS Total, 
COUNT(account_id) AS Number, 
CONCAT(c.last_name, ', ', c.first_name) AS Name 
FROM accounts AS a 
INNER JOIN customers AS c 
USING (customer_id) 
GROUP BY (a.customer_id) ORDER BY Name; 

Comment CONCAT(c.last_name, ', ', c.first_name) être exécuté lorsque clients AS c ne se produit pas jusqu'à ce que la troisième dernière ligne? Et cela n'entraîne pas d'erreur.

Répondre

0

Dans sql le code est évalué dans un ordre spécifique:

  • d'abord la clause FROM est évaluée et l'alias lié
  • alors la condition WHERE
  • après que la clause SELECT
  • et durent le GROUP BY, la clause HAVING et l'ORDER BY

Ainsi les noms d'alias de table sont parfaitement connus au sélectionnez l'heure.

+0

Merci pour votre réponse. Très appréciée. – chu8

+0

@Chug bien si ma réponse sur l'ine des autres est juste choisir le mieux et s'il vous plaît marquer comme accepté ... voir comment ici http://meta.stackexchange.com/questions/5234/comment-does-accepting- an-answer-work – scaisEdge

+0

ahh oui. im nouveau à empiler débordement, donc ne le réalise pas. Merci. – chu8

0

Je pense que votre question est plutôt bonne.

Pensez-y comme suit: Vous ne pouvez rien sélectionner une fois que vous savez où le sélectionner. De la même manière, vous ne pouvez rien commander avant d'avoir été sélectionné. Ainsi, lorsque vous créez un alias sur un nom de table, mysql peut alors l'utiliser dans la partie de sélection. Et quand vous créez un alias dans la partie selection, mysql peut l'utiliser dans la partie order. J'espère que ceci le clarifiera pour vous. S'il vous plaît laissez-moi savoir si cela répond pour vous.

+0

Merci pour votre réponse. Très appréciée. – chu8