Mysql 左连接计数

标签 mysql

我的问题与我正在编写的游戏有关,当一组元素位于游戏 block 上时,游戏元素、坏人尸体和硬币会掉落在土地的特定 x,y 坐标处的地面上显示宝藏图标。重要的是我要数一下有多少个,这样当玩家拿起它们时,如果玩家把它们全部拿走,它就会被删除。还有其他方法可以做到这一点,但我使用的方法非常适合我的应用程序。

所以我需要在字段 x、y、land 上连接 3 个表,并计算每个组合出现的次数,并且硬币存储为其值,因此我想计算每个硬币的数量(换句话说,添加值来计数)所以我有如下表格 在所有表中 posx、posy、land 均分组为 表名称:game_coins 字段:posx、posy、land、value <-- 计为存储在 value 中的 #

table name: game_items
fields: posx, posy, land, item_id   <--counts as 1


table name: game_corpses
fields: posx, posy, land, id <-- counts as 1

这是我到目前为止使用的查询,我收到一个不明确的错误,我知道这意味着什么,但似乎我应该能够调用具有 1 个列名的所有表,如果它们相同并且我按分组该栏

SELECT  posx, posy, land, COUNT(*) as 'count' 
FROM game_itemlist  
LEFT JOIN game_corpses ON posx, posy, land  
LEFT JOIN game_coins ON posx,posy,land 
WHERE land = 'test' GROUP BY posx, posy, land

我可以添加值来计算后记,但我无法正确获取左连接。

最佳答案

这并不是真正的JOIN。并不是每个 game_item 都与一组特定的 game_corpses 相关;而是这只是您正在计算的两组事物。

UNION 可能更合适:

SELECT COUNT(1) FROM
(
 SELECT * FROM game_items WHERE ...
 UNION
 SELECT * FROM game_corpses WHERE ...
)

根据您所做的工作量,您可以通过将这两个表合并为一个表并使用一个字段指示它是元素还是尸体来受益。

关于Mysql 左连接计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434922/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

php - MySQL SELECT 有时即使存在也找不到任何内容

MySql where 子句搜索失败

javascript - MySQL 查询返回一个字符串作为 JSON_OBJECT() 的结果

mysql - 如何允许 percona 以本地主机上的非 sudo 用户身份与 root 连接?

mysql - 如何用where条件备份mysql数据库?

php - MySqli php UUID_SHORT

python - MySQLdb 错误 1130 : Not getting the correct IP of the server

php - Mysqli 更新查询不起作用

php - Mysql触发变量-查找更新用户