选择选择的结果

时间:2011-01-24 10:36:46

标签: mysql where-clause

我有一个记录游戏中用户移动的数据库表。每次他们移动我记录他们的用户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做两件事:

  • 检测在特定区域中启动和完成的所有用户(例如,在区域0中启动并在区域3中完成)
  • 扩展上述内容,检测在特定区域中启动和完成并通过特定区域的所有用户。

我知道如何使用多个SQL语句& java - 但我不知道如何在单个SQL语句中执行此操作。我是否需要选择,然后选择此选择的结果?

3 个答案:

答案 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值来确定第二个等式的结果。

我认为,这应该会给你提示如何做到这一点。