我目前有一个包含两个表 tc_services 和 tc_game_services 的数据库,其中包含有关同一服务的不同信息。它们都由 service_id 字段标识,我需要从一个字段中提取 billing_id ,并从另一个字段中提取 game_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';
答案 0 :(得分:4)
这是非常基本的SQL。您没有在这些表上指定加入条件。正如您所提到的,您的常用列是service_id
。使用此条件连接两个表,然后在WHERE
子句中将逻辑放在检索特定service_id
的记录上。
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
的{{1}}中提取了每条记录,然后将其与每条记录交叉加入service_id = '1812'
。这就是你得到结果的方式。
tc_gameservices
我建议缩短表别名的长度以节省一些打字并使代码看起来更整洁。在处理更大和更复杂的查询时,这可能会特别有用。
作为旁注,如果您的INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812'
属于service_id
数据类型,那么您不需要围绕该值使用单引号。
答案 1 :(得分:0)
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';
答案 2 :(得分:0)
使用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
答案 3 :(得分:0)
我认为您应该在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';