How to create virtual column using MySQL SELECT?

前端 未结 6 1912
天命终不由人
天命终不由人 2020-12-07 13:31

If I do SELECT a AS b and b is not a column in the table, would query create the \"virtual\" column?

in fact, I need to incorporate some virtual column into the quer

相关标签:
6条回答
  • 2020-12-07 13:51

    You could use a CASE statement, like

    SELECT name
           ,address
           ,CASE WHEN a < b THEN '1' 
                 ELSE '2' END AS one_or_two
    FROM ...
    
    0 讨论(0)
  • Your syntax would create an alias for a as b, but it wouldn't have scope beyond the results of the statement. It sounds like you may want to create a VIEW

    0 讨论(0)
  • 2020-12-07 14:01

    Try this one if you want to create a virtual column "age" within a select statement:

    select brand, name, "10" as age from cars...
    
    0 讨论(0)
  • 2020-12-07 14:01

    You can add virtual columns as

    SELECT '1' as temp
    

    But if you tries to put where condition to additionally generated column, it wont work and will show an error message as the column doesn't exist.

    We can solve this issue by returning sql result as a table.ie,

    SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1
    
    0 讨论(0)
  • 2020-12-07 14:03

    Something like:

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

    This allows you to make operations and show it as columns.

    EDIT:

    you can also use joins and show operations as columns:

    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
    
    0 讨论(0)
  • 2020-12-07 14:03

    SELECT only retrieves data from the database, it does not change the table itself.

    If you write

    SELECT a AS b FROM x
    

    "b" is just an alias name in the query. It does not create an extra column. Your result in the example would only contain one column named "b". But the column in the table would stay "a". "b" is just another name.

    I don't really understand what you mean with "so I can use it with each item later on". Do you mean later in the select statement or later in your application. Perhaps you could provide some example code.

    0 讨论(0)
提交回复
热议问题