1

我在同一个数据库中有两个表:hlstats_Events_Connects 和 hlstats_PlayerUniqueIds。

在 hlstats_Events_Connects 中,我有一个我希望获得的值,但是与它相关的 ID 我需要使用我拥有的“uniqueId”从另一个表中的数据中获取。例子:

**hlstats_Events_Connects**

playerId     eventTime
----------------------
8           2013-04-05 05:44:14


**hlstats_PlayerUniqueIds**

playerId     uniqueId
---------------------
8            0:0:84901

所以我将“uniqueId”作为变量,我想说的是,获取人员 uniqueId 的 playerId,然后从 playerId 中获取 eventTime。目前我有一些类似下面的内容,但无法弄清楚 Where 子句。

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM  c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds
WHERE ...?

干杯

4

3 回答 3

2

看起来你只是缺少JOIN. 您将加入playerId列上的表:

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM  c.hlstats_Events_Connects c
INNER JOIN u.hlstats_PlayerUniqueIds u
  ON c.playerId = u.playerId

请注意,我更新了查询以使用 ANSI JOIN 语法,在本例中为INNER JOIN. 这是标准 SQL 语法,而不是表之间的逗号和WHERE

于 2013-04-08T11:33:28.933 回答
1

JOIN像这样使用

SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM  c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds
WHERE c.playerId = u.playerId
于 2013-04-08T11:34:44.363 回答
0

您不需要为表名添加前缀,而是应该在表名之后指定这些前缀,并且您也可以只加入playerId列(如果这些是大表,我建议为这些列添加索引。)

SELECT
    c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM
    hlstats_Events_Connects c,
    hlstats_PlayerUniqueIds u
WHERE
    u.uniqueId = "0:0:84901" and
    u.playerId = c.playerId
于 2013-04-08T11:42:17.467 回答