How to select from multiple tables in MySQL
This article explains how to use MySQL to query from multiple tables in one script SELECT
.
Let's demonstrate a situation:
SELECT name, price, details, type, FROM food, food_order WHERE breakfast.id = 'breakfast_id'
Now, let's imagine FROM
an example table with for each entry.
-
food
-
food_menu
According to the table above, we can see that eggs have 3 photos, ice cream also has 3 photos, and ramen has 2 photos. What we want to output is an aggregate table of food
and food_menu
, showing all the food together and combining the corresponding photos in the menu.
If we query this.
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
The result will be something like this:
The data is duplicated because food_menu
there are multiple rows of data in food
that are related to . In this case, food_menu
3 of the photos in are directly tied to Eggs.
It is not possible for a simple query to food_menu
join all the entries in into a single record, because they are all considered food
independent entities related to the table.
food
If you want to query both and
in one line food_menu
, then there are a few options.
food
How to SELECT from multiple tables
using GROUP BY
This approach uses GROUP BY
to aggregate the two tables into one result. But the downside is that you only get food_menu
the first instance of since we force the result to be unique.
The following is GROUP BY
food
a query on the table.
SELECT name, price, options, photo
FROM food, food_menu
WHERE food_id = '1'
GROUP BY food_id
It will display the following result.
Now our condition is satisfied, although only one photo is returned, which is the first food_menu
instance found by the query.
JOIN
Using from multiple tables
in MySQLSELECT
This method utilizes the SQL JOIN
or RIGHT JOIN
command.
We don't have 2 conditions in the script , but instead join FROM
based on its foreign key . We will use as an alias for and as an alias for .food_id
food_menu
f
food
fm
food_menu
SELECT f.name, f.price, f.options, fm.food_menu
FROM food AS f
JOIN food_menu AS fm ON fm.food_id = f.food_id
WHERE food_id = '1'
GROUP BY f.food_id
Although this method is different from the previous one, it produces the same result. It returns food_menu
the first instance of because GROUP BY forces the query to return only one row based on its condition.
Use in MySQL GROUP_CONCAT()
and process the results
A workaround to the previous solution is to use to GROUP_CONCAT()
put food_menu
all the results of into a single string, thus putting all their records on a single row.
What isGROUP_CONCAT()
GROUP_CONCAT
is a function that merges multiple rows of data into one field. It is a GROUP BY
special function of that returns a modified string if the group contains at least 1 non-null value. Otherwise, it returns NULL
.
We modify the above query to GROUP_CONCAT()
a photo column and concatenate the results into a string.
SELECT name, price, options, GROUP_CONCAT(photo, ', ')
FROM food, food_menu
WHERE food_id = '1'
GROUP BY food_id
By doing this, we are food_menu
concatenating the photo columns of so that each food
unique entry of will produce only one record. The result will be as shown below.
food
As you can see, it joins the columns from the
three Eggs-related tables photo
.
If we remove GROUP BY
the and conditionsWHERE
SELECT name, price, options, GROUP_CONCAT(photo, ', ')
FROM food, food_menu
The result is this
Be careful when using GROUP_CONCAT()
, if your string contains a comma and your CONCAT
delimiter is also a comma, your data will be corrupted when parsing your column.
So before using this function, make sure your delimiter is an invalid character for the column you are operating on.
For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.
Related Articles
How to drop all tables in MySQL
Publish Date:2025/04/24 Views:196 Category:MySQL
-
This article demonstrates several ways for users to delete all tables in MySQL and lists sample scripts to implement this method. The reason you can't just drop all the tables in one line of code is that in a large and well-designed databas
Executing SQL Queries in Pandas
Publish Date:2025/04/12 Views:183 Category:Python
-
SQL stands for Structured Query Language; it is a well-known language for interacting with relational databases. There are many ways to run SQL queries in Python. pandasql Run SQL queries in Python using This package has a method similar to
在 Pandas 中执行 SQL 查询
Publish Date:2024/04/24 Views:1229 Category:Python
-
本教程演示了在 Python 中对 Pandas DataFrame 执行 SQL 查询。
SQL 和 MySQL 的区别
Publish Date:2024/03/25 Views:202 Category:MySQL
-
本文解释了 SQL 和 MySQL 之间的五个区别。我们的解释将包括代码和文字,因此你将对 SQL 和 MySQL 之间的区别有一个清晰的了解。
JavaScript 中的 SQLite 数据库
Publish Date:2024/03/21 Views:126 Category:JavaScript
-
本教程展示了如何使用 JavaScript 语言对 SQLite 数据库执行各种 CURD 操作。
在 PowerShell 中运行 SQL 查询
Publish Date:2024/02/06 Views:192 Category:编程语言
-
本文介绍如何调用 SQL 服务器的命令、执行 CRUD 操作以及查询 SQL 的其他替代方法。
使用 PowerShell 检查 SQL Server 版本
Publish Date:2024/02/06 Views:170 Category:编程语言
-
本教程将教你使用 PowerShell 检查 SQL Server 版本。检查程序的版本是你可以在 PowerShell 中执行的常见操作之一。
在 C# 中进行 SQL 插入查询
Publish Date:2024/02/03 Views:126 Category:编程语言
-
有两种主要方法可用于将记录插入 C# 中的数据库中:直接查询方法和参数化查询方法。使用 C# 中的简单查询方法进行 SQL 插入
在 C# 上连接到 SQL 数据库
Publish Date:2024/02/01 Views:102 Category:编程语言
-
本教程演示如何使用 SqlConnection 对象连接到 C# 上的 SQL 数据库。本教程将演示如何使用 SqlConnection 对象连接到 C# 上的 SQL 数据库。