How to create virtual column using MySQL SELECT?
PhpMysqlSelectPhp Problem Overview
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 query and process some information into the query so I can use it with each item later on.
Php Solutions
Solution 1 - Php
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
Solution 2 - Php
Try this one if you want to create a virtual column "age" within a select statement:
select brand, name, "10" as age from cars...
Solution 3 - Php
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
Solution 4 - Php
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.
Solution 5 - Php
You could use a CASE statement, like
SELECT name
,address
,CASE WHEN a < b THEN '1'
ELSE '2' END AS one_or_two
FROM ...
Solution 6 - Php
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
Solution 7 - Php
See MariaDB Docs. Virtual columns are create by adding the keyword VIRTUAL
to the column while adding an expression just before that. The good thing: you can add an index to the virtual column. If you need the actual values and are concerned about speed over storage use a PERSISTENT
column.