我有一个数据库表,用于记录游戏中用户的 Action 。每次他们移动时,我都会记录他们的用户 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 语句中执行此操作。我是否需要先进行选择,然后再选择此选择的结果?
最佳答案
您可以简单地执行 SUBQUERY在“单个”查询中实现此目的。
例如:SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
本质上,您正在使用“内部”SELECT 的结果作为“外部”SELECT 的工作数据集。
关于mysql - 选择一个选择的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781002/