mysql - 选择一个选择的结果

标签 mysql where-clause

我有一个数据库表,用于记录游戏中用户的 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/

相关文章:

mysql - 使用 2 个 WHERE 子句

php - sql语句中的变量

php - Laravel where 'less than' 查询未显示预期结果

sql-server - 如何对 SQL Server 中的 IN 或列表进行 LIKE

mysql - 使用多个条件从表中选择

Mysql计数结果在 "where"子句中

php - 友谊表的MYSQL JOIN QUERY

mysql - 查询具有多个连接和每个表的多个计数的论坛

php - 如何使用两个查询结果只显示一次数据

mysql - 使用 MySQL 的 LIKE 和记录过滤没有变化