web-dev-qa-db-fra.com

Comment créer une colonne virtuelle à l'aide de MySQL SELECT?

Si je sélectionne un AS b et b n'est pas une colonne de la table, la requête créerait-elle la colonne "virtuelle"?

en fait, j'ai besoin d'incorporer une colonne virtuelle dans la requête et de traiter certaines informations dans la requête afin de pouvoir les utiliser avec chaque élément plus tard.

59
Skuta

quelque chose comme

    SELECT id, email, IF(actived = 1, 'enabled', 'disabled') AS account_status
FROM users

cela vous permet d'effectuer des opérations et de l'afficher sous forme de colonnes.

MODIFIER:

vous pouvez également utiliser des jointures et afficher des opérations sous forme de colonnes:

    SELECT u.id, e.email, IF(c.id IS NULL, 'no selected', c.name) as country
FROM users u LEFT JOIN countries c ON u.country_id = c.id
79
Gabriel Sosa

Essayez celui-ci si vous souhaitez créer une colonne virtuelle "age" dans une instruction select:

select brand, name, "10" as age from cars...
58
ninsky

Vous pouvez ajouter des colonnes virtuelles comme

SELECT '1' as temp

Mais si vous essayez de mettre la condition where à une colonne générée en plus, cela ne fonctionnera pas et affichera un message d'erreur car la colonne n'existe pas.

Nous pouvons résoudre ce problème en renvoyant le résultat sql sous forme de table.ie,

SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1
9
rb vishnu

SELECT ne récupère que les données de la base de données, il ne modifie pas la table elle-même.

Si vous écrivez

SELECT a AS b FROM x

"b" est juste un nom d'alias dans la requête. Il ne crée pas de colonne supplémentaire. Votre résultat dans l'exemple ne contiendrait qu'une seule colonne nommée "b". Mais la colonne du tableau resterait "a". "b" est juste un autre nom.

Je ne comprends pas vraiment ce que vous entendez par "donc je peux l'utiliser avec chaque élément plus tard". Voulez-vous dire plus tard dans l'instruction select ou plus tard dans votre candidature. Vous pourriez peut-être fournir un exemple de code.

3
Sebastian Dietz

Votre syntaxe créerait un alias pour a comme b, mais elle n'aurait pas de portée au-delà des résultats de l'instruction. Il semble que vous souhaitiez créer une vue

0
cmsjr