gpt4 book ai didi

MySql - 将三个表中的数据合并到一个表中

转载 作者:行者123 更新时间:2023-11-29 07:20:07 28 4
gpt4 key购买 nike

我有 3 个表,用于存放部门、地区和警察局表的数据。表数据是相互依赖的

divisions
- districts
-- police_stations

表格格式为

divisions
id
name

districts
id
division_id
name

police_stations
id
division_id
district_id
name

我可以只设计一个表,其中包含具有当前表依赖性的所有表数据吗?如果可以的话,穿越过程会怎样?

最佳答案

要将多个表组合在一起,您应该使用 JOINS。这是比创建新表更好的数据库实践。

The INNER JOIN keyword selects all rows from both tables as long as there is a match between the columns in both tables.

SELECT *
FROM divisions divis
INNER JOIN districts dis
ON dis.division_id = divis.id
INNER JOIN police_stations pol
ON pol.district_id = dis.id

注意:显然 DIV 关键字是 mysql 中保留的,所以你必须使用其他东西来标识分区。

如果您坚持使用此数据创建新表,则可以使用CREATE TABLE AS配方。

为了做到这一点,我们需要修改原始架构。新表不能有重复的名称,因此我们必须将原始表更改为全部具有唯一的列。

例如,name 变为 district_name

CREATE TABLE combined AS (
SELECT divis.id, divis.division_name, dis.district_name, pol.police_name
FROM divisions divis
LEFT JOIN districts dis
ON divis.id = dis.division_id
LEFT JOIN police_stations pol
ON pol.district_id = dis.id
);

这是一个 fiddle 来演示它

http://sqlfiddle.com/#!9/7ec3b/1/0

但这确实是糟糕的数据库设计。推荐我的第一个解决方案

关于MySql - 将三个表中的数据合并到一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502981/

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