代码之家  ›  专栏  ›  技术社区  ›  user470760

从具有相同ID的两个表中查询值

  •  0
  • user470760  · 技术社区  · 8 年前

    我目前有一个包含两个表的数据库 tc_服务 tc游戏服务 ,其中包含关于同一服务的不同信息。它们都由 服务id 字段,我需要将 账单id 从一个和 从另一个。

    现在,我在其他问题中找到了一些示例,但是当运行时,它们只是为每个服务提供了这两个值的列表,而不是我试图查询的特定值。

    SELECT
      tcservices.billing_id,
      tcgameservices.game_id
    FROM tc_services AS tcservices
    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812';
    
    4 回复  |  直到 8 年前
        1
  •  5
  •   Kamil Gosciminski    8 年前

    这是非常基本的SQL。您没有在这些表上指定连接条件。正如您所提到的,您的常见列是 service_id 。使用此条件连接两个表,然后在 WHERE 子句将逻辑放在特定记录的检索上 .

    SELECT
      tcservices.billing_id,
      tcgameservices.game_id
    FROM tc_services AS tcservices
    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
    WHERE tcservices.service_id = '1812';
    

    解释你的方法的行为 (下面一行):您从 tc_services 匹配条件 service_id = '1812' 然后将它与来自 tc_gameservices 这就是你的结果。

    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812'
    

    我建议减少表别名的长度,以节省一些输入,并使代码看起来更整洁。在处理大型复杂查询时,这可能特别有用。

    作为旁注,如果您的 服务id 属于 Integer datatype则不需要在值周围加单引号。

        2
  •  0
  •   Imanez    8 年前
    SELECT
      tcservices.billing_id,
      tcgameservices.game_id
    FROM tc_services AS tcservices
    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id 
     where tcservices.service_id = '1812';
    
        3
  •  0
  •   Alex K.    8 年前

    使用 ON 来指定两者之间的关系,因此在 service_id 然后使用筛选结果 WHERE :

    SELECT
      tcservices.billing_id,
      tcgameservices.game_id
    FROM tc_services AS tcservices
    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
    WHERE tcservices.service_id = 1812
    
        4
  •  0
  •   xeph    8 年前

    我认为您应该在WHERE子句中指定要搜索的ID,并在INNER join中指定要加入的列。

    SELECT tcservices.billing_id, tcgameservices.game_id
    FROM tc_services AS tcservices
    INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
    WHERE tcservices.service_id = '1812';