我需要查询方面的帮助。您将获得以下表格:玩家(玩家ID(主键),玩家名)和村庄(村庄ID,villageName,x,y,人口,玩家ID(外键),并检查y中的x是否在-400到400之间。

任务是编写一个查询,输出为球员姓名,他们的所有村庄的x都在100到200之间,y的村庄在0到100之间。

目前,我有此查询,但它并不查找所有村庄。

SELECT i.playerName
FROM player i JOIN
     village n
     USING(playerID)
WHERE (n.x BETWEEN 100 AND 200) AND (n.y BETWEEN 0 AND 100);

最佳答案

如果要所有村庄,则需要比较所有行。这表明聚合:

SELECT i.playerName
FROM igralec i JOIN
     naselje n
     USING (playerID)
GROUP BY i.playerName
HAVING SUM( (n.x BETWEEN 100 AND 200) AND (n.y BETWEEN 0 AND 100) ) = COUNT(*);


HAVING子句保证所有行(即城市)都满足给定玩家的条件。

关于mysql - MySQL查询:按坐标输出所有玩家村庄,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50587547/

10-10 07:52