gpt4 book ai didi

MySQL 使用三个表中的数据获取值

转载 作者:行者123 更新时间:2023-11-30 00:20:36 25 4
gpt4 key购买 nike

我需要使用其他两个表中的信息从一个表中获取一个值。结构如下:

用户表

+-----------+---------+------------+
| ID | NAME | ZIP |
+-----------+---------+------------+
| 1 | John | 1111-222 |
| 2 | Maria | 2222-555 |
| 3 | José | 3333-505 |
+-----------+---------+------------+

邮政编码表

+-----------+---------+------------+------------+
| DD | CC | PART1 | PART2 |
+-----------+---------+------------+------------+
| 1 | 1 | 1111 | 101 |
| 1 | 1 | 1111 | 111 |
| 1 | 2 | 1111 | 222 |
| 1 | 3 | 2222 | 333 |
| 2 | 1 | 2222 | 100 |
| 2 | 1 | 2222 | 555 |
| 2 | 2 | 2244 | 222 |
| 2 | 2 | 2244 | 333 |
| 2 | 3 | 2245 | 311 |
| 3 | 1 | 3333 | 111 |
| 3 | 2 | 3333 | 222 |
| 3 | 3 | 3333 | 505 |
+-----------+---------+------------+------------+

区域名称表

+-----------+---------+------------+
| DD | CC | AREA |
+-----------+---------+------------+
| 1 | 1 | Lisboa |
| 1 | 2 | Porto |
| 1 | 3 | Aveiro |
| 2 | 1 | Braga |
| 2 | 2 | Fundão |
| 2 | 3 | Bogas |
| 3 | 1 | Faro |
| 3 | 2 | Leiria |
| 3 | 3 | Covilhã |
+-----------+---------+------------+

我需要做的是一个查询,从第一个表中获取所有用户,其中包含所有用户数据(ID、NAME、ZIP)以及 AREA 名称。对于这个例子,它将是:

1, John, 1111-222, Porto
2, Maria, 2222-555, Braga
3, José, 3333-505, Covilhã

提前致谢,米格尔。

最佳答案

这就是答案:

SELECT 
a.id,
a.name,
a.zip,
c.area

FROM

users a
LEFT JOIN
zip_match b

ON a.zip = concat(b.part1,'-',b.part2)

LEFT JOIN

areas_name c

ON b.dd = c.dd
and b.cc = c.cc;

假设您的表分别名为 userszip_matchareas_name。不确定 part1part2 的数据类型,它们可能需要转换为字符串才能在 concat 函数中使用。

关于MySQL 使用三个表中的数据获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com