Mysql 从多个表中检索,同时只允许一列的不同结果

Mysql 从多个表中检索,同时只允许一列的不同结果,mysql,sql,Mysql,Sql,我试图从三个表中进行选择,区域、玩家和区域玩家。并按地区名称排序结果,然后按球员最后一次出现在该地区的时间排序。我真的很想这样,我只返回一个结果,每个地区的球员谁没有看到最长的 SQL 一些表格数据 RegionName key Name 1 regionone 2 regiontwo 3 regionthree 4 regionfouor 5 regionfive Players Key Name Se

我试图从三个表中进行选择,区域、玩家和区域玩家。并按地区名称排序结果,然后按球员最后一次出现在该地区的时间排序。我真的很想这样,我只返回一个结果,每个地区的球员谁没有看到最长的

SQL

一些表格数据

RegionName
    key Name
    1   regionone
    2   regiontwo
    3   regionthree
    4   regionfouor
    5   regionfive

Players
    Key     Name    Seen
    1       jack    2014-03-21 12:43:46
    2       joe     2014-03-26 12:43:46
    3       bob     2014-03-20 12:43:46
    4       bill    2014-03-19 12:43:46
    5       dave    2014-03-17 12:43:46
    6       tina    2014-03-28 12:43:46
    7       tony    2014-03-29 12:43:46
    8       george  2014-03-15 12:43:46
    9       sam     2014-03-18 12:43:46
    10      frank   2014-03-18 12:43:46

RegionPlayer
    key Regionkey   PlayerKey
    1   1           1
    2   1           4
    3   1           5
    4   2           1
    5   2           4
    6   3           6
    7   3           7
    8   4           1
    9   4           8
    10  4           7
    11  5           3

我接受你的陈述,首先是分组前的部分

SELECT RegionName.*, RegionPlayer.*, Players.*
FROM RegionName
    JOIN RegionPlayer
        ON RegionPlayer.Regionkey = RegionName.Key
    JOIN Players
        ON Players.Key = RegionPlayer.Playerkey

WHERE Players.Seen = (
    SELECT MIN(Players2.Seen) 
    FROM RegionName as RegionName2
    JOIN RegionPlayer as RegionPlayer2
        ON RegionPlayer2.Regionkey = RegionName2.Key
    JOIN Players as Players2
        ON Players2.Key = RegionPlayer2.Playerkey
    WHERE RegionName2.Key = RegionName.Key
    )
然后根据你的陈述分组

GROUP BY RegionName.Name, Players.Seen DESC 

子选择返回当前地区玩家看到的最短日期

你这个查询到底有什么问题?我想我可能遗漏了什么,但我会出错,因为RegionPlayer2不存在。你是对的。我修正了答案中的陈述。”RegionPlayer2'应该是“RegionPlayer作为RegionPlayer2”。subselect中的其他两个表也是如此。
GROUP BY RegionName.Name, Players.Seen DESC