当前位置: 首页 > 知识库问答 >
问题:

在mysql中检索具有不同ID的多行

白刚洁
2023-03-14

我正在尝试用mysql编写一个查询,其中我的表结构如下所示

place_id    state_id    city_id     place_name  
    1           0           0           United States   
    2           1           0           Alabama     
    3           0           2           Auburn  
    32          0           0           Canada  
    33          32          0           Alberta     
    34          0           33          Calgary 

这里我有美国的id,它是1,使用这个id我想检索美国的所有州和每个州的城市。这里,

  1. 如果state_id和city_id为0,则为国家
  2. 如果city_id为0,则为状态
  3. 如果state_id为0,则为城市
  4. 位置id为auto_increment

请有人帮帮我,谢谢。

共有1个答案

白迪
2023-03-14

对于美国,您可以使用self join将同一个表连接3次。

select t1.place_name, t2.place_name, t3.
from my_table t1 
inner join my_table t2 on  t1.place_id = t2.state_id 
inner join my_table t3 on t3place_id =   t3.city_id
where t1.place_name  ='United States';
 类似资料:
  • 问题内容: 很抱歉,我只学习了PHP和MySQL,已经搜索了一个多星期,但是没有找到任何答案。 我创建了一个简单的财务脚本,该表如下所示: 我想要这样的结果 有人可以帮助我解决我的问题吗? 谢谢 问题答案: 正如@Quassnoi指出的那样,这对于MySQL来说不是很有效。我尝试使用怪胎连接而不是子查询,因为内部查询本身就可以使用。 编辑 对此引起了一些兴趣,发现连接版本的速度是@Quassnoi

  • 问题内容: 我想做这样的事情: 我怎样才能做到这一点? 问题答案: 如果必须选择ID: 如果您已经知道它们(并且它们不在成千上万):

  • 问题内容: 我有以下查询: 并输出以下内容: 我想要的输出是这样的: 我认为这很有用。但是,这样做: 我有一个像这样的独特行: 我该如何解决? 问题答案: 您需要添加: 在此过程中,您应该学到其他一些知识: 使用显式语法。一个简单的规则:不要在子句中使用逗号。 使用表别名(和)。它们使查询更易于编写和阅读。

  • 问题内容: 我想检索限制为0,x的特定用户的所有行。 所以我只想问问有没有办法在不调用返回x&的count(id)的方法的情况下检索mysql中的所有行,而不会重载在查询和withour string中完全没有限制的现有函数的重载。 )功能。 因为在内部,当我们选中“显示所有”复选框时,mysql可能会使用它,然后显示taht表的所有行 问题答案: 一个简单的解决方案是将int的最大范围发送到方法

  • 问题内容: 我遇到一个问题,当执行两个表的联接时,无法确定mysql查找具有两个特定“标签”和相同“ hashid”的链接 假设我的表看起来像这样: 链接 标签 我想返回同时具有“有用”和“很棒”标签的行 当前(工作/快速)查询,用于按1个标签查找链接: 阅读文章后,我尝试使用以下内容: 这 不 工作,但它是如此令人难以置信的缓慢,因为无法使用。 有人知道解决方案吗? 问题答案: 问题的类型称为

  • 问题内容: 我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将三个更新更新为1个查询: 我读了一个例子,但我真的不明白如何进行查询。即: 如果在WHERE和IF条件中存在多个条件,我还不太清楚如何执行查询。 问题答案: 您可以这样操作: 我不了解您的日期格式。日期应使用本机日期和时间类型存储在数据库中。