我有一个记录游戏中用户移动的数据库表。每次他们移动我记录他们的用户ID,move_index(递增每一行)和他们所在区域的id。我有一个特殊的move_index值-1表示该用户的最后一次移动。
id user_id move_index zone_id
----------------------------------------------------------------
0 11 0 0
1 11 1 0
2 11 2 0
3 11 -1 3
4 22 0 0
5 22 1 1
6 22 2 1
7 22 -1 3
我想用sql做两件事:
我知道如何使用多个SQL语句& java - 但我不知道如何在单个SQL语句中执行此操作。我是否需要选择,然后选择此选择的结果?
答案 0 :(得分:10)
您只需执行SUBQUERY即可在“单一”查询中实现此目的。
例如:SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
本质上,您使用“内部”SELECT的结果作为“外部”SELECT的工作数据集。
答案 1 :(得分:0)
select distinct user_id from table where (move_index=0 and zone_id=0) and (move_index=-1 and zone_id=3)
答案 2 :(得分:0)
这里是您的查询:
SELECT *, (foo = true AND bar = true) as foobar
FROM foo
WHERE (id = 3)
您可以在查询结果中使用foobar值来确定第二个等式的结果。
我认为,这应该会给你提示如何做到这一点。