【问题标题】:Multiple tables in a single table in MySQLMySQL中单个表中的多个表
【发布时间】:2015-09-15 08:40:00
【问题描述】:

我从 GitHub 下载了Worlds-Country-State-and-City-Mysql-Database project,它提供了一个国家、州和城市的数据库。

通常在国家、州和城市的三个表中可以找到此类数据库,但这里只有一个表,并且包含所有三个数据。它工作正常,但我无法理解它是如何工作的。

这是该表的快照。

请大家解释一下

【问题讨论】:

    标签: php mysql join


    【解决方案1】:

    您在这里拥有的是父子关系。 parent_ID 列指定一个位置是否属于另一个(是另一个的子)Location_id。

    例如,要获取 Aruba 的直接子项(状态),您可以这样进行自联接:

    select * from mytable A
    left join mytable B -- join same table
    on b.parent_id=a.location_id -- with parent of the secondary being equal to the ID of the primary.
    where a.location_id='Aruba'
    

    如果你想得到州(城市)的孩子,你还需要一个自加入

    【讨论】:

    • 但是这里只有一张桌子
    • 这正是我在查询中写的。您可以多次使用同一个表,甚至可以将其连接到自身,只要您使用别名(上面的示例,它们是 A 和 B)。这叫做自我加入
    • 查看关于--join同一张表的部分
    • 我需要知道表结构而不是查询,他是如何在一个表中插入所有数据的?
    • 那是一张普通的桌子。他可以以多种方式插入它。它没有什么特别之处。可以将其视为一个位置表,其中包含一个额外的列 parent_id,它解释了哪个位置属于另一个位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2020-06-06
    • 2012-01-23
    • 2013-12-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多