Introduction to MySQL SELECT INTO Variable
Sometimes there is a need to store the values of the retrieved fields inside the variables in MySQL. We can do this by using the clause INTO to store the values of the retrieved fields whether they be column values of aggregate values or any other expressions that are retrieved in the SELECT query statement. The variables in MySQL are accessed and declared in the format of @ before the name of the variable. In this article, we will learn how we can save the fetched values of the query statement into the variables in MySQL and learn its syntax and implementation with the help of some examples.
Syntax:
The syntax of storing the selected values into the variables of the select query is as follows –
SELECT column1, column2, column3, ... INTO @variable1, @variable2, @variable3,... FROM tablename WHERE condition or restriction;
- column1, column2, column3, … – These are the names of the columns that you are retrieving from the table named tablename. You can retrieve any number of columns from the select statement.
- @variable1, @variable2, @variable3,… – These are the names of the variables into which you want to store the retrieved column values. Note that the number of columns and variables should be the same. Also, note that the sequence in which the columns are retrieved and variables are specified should be correct as each one of the columns will get stored to its corresponding variable. Like column1 value that is retrieved will get store into @variable1, column2 value that is retrieved will get store into @variable2 and so on.
- tablename – this is the name of the table from which you want to retrieve the values of columns.
- condition or restriction – This is optional in usage and can be used if you wish to specify certain conditions or restrictions on the columns and filter out the result accordingly while retrieval.
Working of MySQL SELECT INTO Variable
The retrieved result set of the query should contain one or no records. In case, if multiple records are fetched from the query statement then MySQL will produce an error. If none of the rows is returned from the query then MySQL issues a warning and the values of the variables that are used for storage remains unchanged. Only in case if a single record is retrieved the correct retrieved values are set to the variables.
Hence, to avoid the error that occurs when multiple records are retrieved, we can use the MySQL LIMIT clause. This clause helps us retrieve the only specified number of the rows even if the actual query resultset may retrieve too many rows. To avoid the error, we can specify LIMIT 1 at the end of our select query. This helps us to make sure that at maximum only one row is retrieved from the query statement.
Examples of MySQL SELECT INTO Variable
Consider a table named workers that have the following structure,
CREATE TABLE `workers` (
`developer_id` int(11) NOT NULL AUTO_INCREMENT,
`team_id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`position` varchar(100) DEFAULT NULL,
`technology` varchar(100) DEFAULT NULL,
`salary` int(11) DEFAULT NULL,
PRIMARY KEY (`developer_id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1;
that gives the following output after the execution of the query
Let us insert some records in the table workers by using the following insert query statement –
INSERT INTO `workers` VALUES
(1,1,'Payal','Developer','Angular',30000),
(2,1,'Heena','Developer','Angular',10000),
(3,3,'Vishnu','Manager','Maven',25000),
(4,3,'Rahul','Support','Digital Marketing',15000),
(5,3,'Siddhesh','Tester','Maven',20000),
(6,7,'Siddharth','Manager','Java',25000),
(7,4,'Brahma','Developer','Digital Marketing',30000),
(8,1,'Arjun','Tester','Angular',19000),
(9,2,'Nitin','Developer','MySQL',20000),
(10,2,'Ramesh','Administrator','MySQL',30000);
that gives the following output after execution of the query –
Let us retrieve all the records of the worker’s table by using the following query statement –
SELECT * FROM workers;
that gives the following output after execution of the query –
We will see the first example that will get only one variable in the select query. Let us store the name of the administrator in the variable admin by using the following query statement –
SELECT name INTO @admin FROM workers WHERE position = 'Administrator';
that gives the following output after the execution of the query –
We can see that the query executed successfully affects one row as now, @admin variable will contain the name of the administrator. From the above resultset of the records of the table we can observe that the worker with the name Ramesh is the administrator and hence, Ramesh value should be stored in the @admin variable. Let us select that variable and observe what value gets retrieved.
SELECT @admin;
that gives the following output after the execution of the query –
Here we go, Ramesh is the value that is stored and now retrieved from the variable @admin.
Let us see one more example where we will insert two variable values from the selected contents of the select query statement. We will store the name and position of the worker with java technology in the variable @javaperson and @javaoperator using the following query statement –
SELECT name, position INTO @javaperson, @javaoperator FROM workers WHERE technology = 'Java';
that gives the following output after the execution of the query –
We can see that the query executed successfully affects one row as now, @javaperson and @javaoperator variables will contain the name and position of the java technology-related person. From the above resultset of the records of the table, we can observe that the worker with the name Siddharth is the manager and is associated with java technology and hence, Siddharth value should be stored in the @javaperson variable and manager value should be stored in the @javaoperator variable. Let us select that variable and observe what value gets retrieved.
SELECT @javaperson, @javaoperator;
that gives the following output after the execution of the query –
Let us try storing values with Angular technology the same as that of java but having more than one record in it.
SELECT name, position INTO @angularperson, @angularoperator FROM workers WHERE technology = 'Angular';
that gives the following output after execution of the query –
We can observe that it throws an error saying that more than one row was retrieved. Let us use LIMIT 1.
SELECT name, position INTO @angularperson, @angularoperator FROM workers WHERE technology = 'Angular' LIMIT 1;
that gives the following output after the execution of the query –
SELECT @angularperson,@angularoperator;
that gives the following output after the execution of the query –
We can observe that the first record with angular technology named payal and position developer were stored in @angularperson and @angularoperator variables respectively.
Conclusion
We can make use of the SELECT INTO clause to get the retrieved values of the SELECT query statement into the variables. We need to be careful about the number and order of variables and columns while doing so. Also, the number of rows being retrieved should not exceed one record.
Recommended Articles
This is a guide to MySQL SELECT INTO Variable. Here we also discuss the introduction and working of mysql select into variable along with different examples and its code implementation. You may also have a look at the following articles to learn more –
12 Online Courses | 10 Hands-on Projects | 92+ Hours | Verifiable Certificate of Completion
4.5
View Course
Related Courses