我在同一个数据库中有两个表:hlstats_Events_Connects和hlstats_PlayerUniqueIds。
在hlstats_Events_Connects中,我有一个我希望获得的值,但是我需要从另一个表中的数据获取与我所拥有的“uniqueId”相关的ID。例如:
**hlstats_Events_Connects**
playerId eventTime
----------------------
8 2013-04-05 05:44:14
**hlstats_PlayerUniqueIds**
playerId uniqueId
---------------------
8 0:0:84901
所以我将“uniqueId”作为变量,我想说,获取personId的playerId,然后从playerId获取eventTime。目前我有类似下面的内容,但无法弄清楚Where子句。
SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds
WHERE ...?
干杯
答案 0 :(得分: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
答案 1 :(得分:1)
像这样使用JOIN
SELECT c.eventTime, c.playerId, u.uniqueId, u.playerId
FROM c.hlstats_Events_Connects, u.hlstats_PlayerUniqueIds
WHERE c.playerId = u.playerId
答案 2 :(得分: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