我想要做的是我需要搜索非玩家角色的游戏应用程序,并且他们有一个名为target_id的字段,用于存储他们追逐的内容的ID。
given:
table mobs with fields and some example data
id x y target_id
1 1 1 2
2 3 3 1
我想通过查询返回以下数据
id x y target_id target_x target_y
1 1 1 2 3 3
2 3 3 1 1 1
这是我尝试的但它有语法错误
SELECT id,x,y,target_id, target.x, target.y FROM mobs LEFT JOIN mobs AS target ON target_id=id FROM mobs WHERE 1
答案 0 :(得分:2)
据我所知,正确的语法是:
SELECT mobs.id, mobs.x, mobs.y, mobs.target_id, target.x, target.y
FROM mobs
LEFT JOIN mobs AS target
ON mobs.target_id = target.id
你已经通过说'JOIN'指定了'FROM',当你不需要过滤任何行时你不需要WHERE
编辑:抱歉我没有把别名放进去 - 你需要确保最后一部分(以及选择中的字段)有你想要定位的表 - 记住,如果你说target_id并不意味着什么在查询中有两个具有相同列名的表。否则你会得到歧义错误。我已将别名添加到查询
答案 1 :(得分:2)
我不知道为什么你有WHERE 1
或第二FROM
,但我相信这就是你想要的:
SELECT M.id, M.x, M.y, M.target_id, T.x, T.y
FROM mobs AS M
LEFT JOIN mobs AS T
ON M.target_id = T.id
将来,您应该发布您的表格定义和预期结果,以便您的问题更清晰。